Mustand: sisu ei ole veel tehniliselt ega keeleliselt täielikult kontrollitud ega toimetatud.

Peatüki vaade

Linux/Unix/macOS käsurea kiirõpik

Praegu loed peatükki Püsivad terminalisessioonid: tmux ja screen, mis kuulub osasse Osa III: Failid, võrk ja süsteemitöö.

Püsivad terminalisessioonid: tmux ja screen

Loogika

Kaugmasinates ja pikkade tööde puhul on väga tavaline probleem:

  • ühendus katkeb
  • terminal aken pannakse kinni
  • töö jääb pooleli

tmux ja screen lahendavad selle nii, et shell jääb serveris tööle ka siis, kui sina vahepeal lahkud.

Kiirülevaade

Eesmärk on hoida pikk töö elus ka siis, kui terminaliaken või SSH-ühendus katkeb.

Käsk või mõisteMilleksMida tavaliselt näed
tmux, screenloo püsiv sessioontavaline shell püsiva kihi sees
detach ehk eralduminejäta töö sessiooni edasi käimanaased tavalisse terminali
attach ehk taasühenduminetule samasse sessiooni tagasisama aken ja samad protsessid
tmux ls, screen -lsloetle sessioonidolemasolevate sessioonide nimed

Tüüpilised algaja vead

  • aetakse segi taustatöö & ja püsiv sessioon
  • pannakse aken kinni ilma, et mõistetaks, kas töö jäi sessiooni sisse jooksma
  • unustatakse sessioonile nimi anda, kuigi see teeks tagasimineku lihtsamaks

Kiirspikker

  • tmux new -s nimi alustab uut sessiooni
  • tmux ls näitab sessioone
  • tmux attach -t nimi ühendub sessiooniga tagasi
  • screen -S nimi alustab uut screen-sessiooni
  • screen -ls näitab olemasolevaid sessioone
  • screen -r nimi ühendub tagasi

Käivita need käsud

Kui kasutad tmux-i:


tmux new -s opik
tmux ls
tmux attach -t opik

Kui kasutad screen-i:


screen -S opik
screen -ls
screen -r opik

tmux

tmux on tänapäeval sageli esimene valik, sest ta on paindlik ja hästi levinud.

Tüüpiline töövoog:

  1. logi serverisse
  2. käivita tmux new -s nimi
  3. tee oma töö selles sessioonis
  4. eemaldu sessioonist, aga ära tapa seda
  5. tule hiljem tagasi käsuga tmux attach -t nimi

Oluline klahvikombinatsioon:

  • Ctrl-b d eraldab sind sessioonist, aga jätab selle tööle

See tähendab, et sinu käivitatud protsessid võivad edasi joosta ka siis, kui ühendus katkeb.

screen

screen on vanem, aga endiselt täiesti kasulik tööriist.

Tema loogika on sama:

  • loo sessioon
  • tee töö sees
  • eemaldu sessioonist
  • naase hiljem

Oluline klahvikombinatsioon:

  • Ctrl-a d eraldab sessioonist

Kumba valida?

Praktiline rusikareegel:

  • kui masinas on olemas tmux, kasuta enamasti seda
  • kui vanemas süsteemis on ainult screen, kasuta screen-i

Oluline on mitte tööriista nimi, vaid harjumus teha pikad tööd püsivas sessioonis.

Millal see eriti kasulik on

  • pikk rsync
  • pikk build
  • andmetöötlus
  • logide jälgimine
  • serveris töötamine ebastabiilse võrgu pealt

See seostub hästi peatükkidega Kauglogimine ja SSH ja Protsessid, tööd ja signaalid.

tmux vs nohup vs disown

Need tööriistad lahendavad sarnast, aga mitte sama probleemi.

  • tmux
  • hoiab alles terve shelli sessiooni

  • nohup
  • aitab ühel käsul jääda ellu ka siis, kui ühendus katkeb

  • disown
  • eemaldab töö shelli tööde nimekirjast

Praktiline rusikareegel:

  • kui tahad hiljem sama shelli juurde tagasi tulla, kasuta tmux-i
  • kui tahad lihtsalt ühe pika käsu käima jätta, võib aidata nohup
  • kui juba töötav taustatöö tuleb shellist "lahti siduda", võib abiks olla disown

Kui pead valima ühe harjumuse, siis vali tmux.

Minitest

  1. Uuri, kas sinu masinas on olemas tmux või screen.
  2. Käivita üks sessioon.
  3. Eemaldu sellest ilma sessiooni lõpetamata.
  4. Ühendu sessiooniga tagasi.
  5. Seleta ühe lausega, miks see on kasulik just kaugmasinas.

Peatüki täisspikker

Praktiline kasutus

Eesmärk

kasuta püsivat sessiooni siis, kui SSH võib katkeda või kui pikk töö peab jätkuma ka pärast akna sulgemist

Põhikujud

  • tmux new -s opikloo tmux
  • tmux attach -t opiknaase tmux-i
  • screen -S opikloo screen
  • screen -r opiknaase screeni
  • nohup pikk-kaik > logi 2>&1 &jäta töö käima
  • disownseo shellist lahti

Olulisemad lipud, märgid ja kiirnupud

  • Ctrl-b deraldu tmux-ist
  • Ctrl-a deraldu screenist
  • tmux lssessioonide loend
  • screen -lssessioonide loend