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õiste | Milleks | Mida tavaliselt näed |
|---|---|---|
tmux, screen | loo püsiv sessioon | tavaline shell püsiva kihi sees |
| detach ehk eraldumine | jäta töö sessiooni edasi käima | naased tavalisse terminali |
| attach ehk taasühendumine | tule samasse sessiooni tagasi | sama aken ja samad protsessid |
tmux ls, screen -ls | loetle sessioonid | olemasolevate 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 nimialustab uut sessioonitmux lsnäitab sessioonetmux attach -t nimiühendub sessiooniga tagasiscreen -S nimialustab uut screen-sessiooniscreen -lsnäitab olemasolevaid sessioonescreen -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:
- logi serverisse
- käivita
tmux new -s nimi - tee oma töö selles sessioonis
- eemaldu sessioonist, aga ära tapa seda
- tule hiljem tagasi käsuga
tmux attach -t nimi
Oluline klahvikombinatsioon:
Ctrl-b deraldab 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 deraldab sessioonist
Kumba valida?
Praktiline rusikareegel:
- kui masinas on olemas
tmux, kasuta enamasti seda - kui vanemas süsteemis on ainult
screen, kasutascreen-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.
tmuxnohupdisown
hoiab alles terve shelli sessiooni
aitab ühel käsul jääda ellu ka siis, kui ühendus katkeb
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
- Uuri, kas sinu masinas on olemas
tmuxvõiscreen. - Käivita üks sessioon.
- Eemaldu sellest ilma sessiooni lõpetamata.
- Ühendu sessiooniga tagasi.
- 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 tmuxtmux attach -t opiknaase tmux-iscreen -S opikloo screenscreen -r opiknaase screeninohup pikk-kaik > logi 2>&1 &jäta töö käimadisownseo shellist lahti
Olulisemad lipud, märgid ja kiirnupud
Ctrl-b deraldu tmux-istCtrl-a deraldu screenisttmux lssessioonide loendscreen -lssessioonide loend