Cum să utilizați tmux pe Linux (și de ce este mai bine decât ecranul)
Publicat: 2022-01-29 Comanda Linux tmux
este un multiplexor de terminal, ca screen
. Avocații săi sunt mulți și vocali, așa că am decis să le comparăm pe cei doi. Este tmux
cu adevărat mai bun sau este doar un caz de a prefera ceea ce știi?
tmux vs. ecran
Atât comenzile screen
tmux
, cât și GNU sunt multiplexoare terminale. Acestea vă permit să aveți mai multe ferestre într-o singură fereastră de terminal și să săriți înainte și înapoi între ele. O fereastră poate fi împărțită în panouri, fiecare dintre acestea oferind o linie de comandă independentă.
De asemenea, puteți detașa o sesiune și aceasta devine o entitate fără cap care rulează în fundal - puteți chiar să închideți fereastra terminalului care a lansat-o. Când sunteți gata, puteți deschide o nouă fereastră de terminal și puteți atașa din nou sesiunea în curs de desfășurare. Puteți face acest lucru și printr-o conexiune SSH.
Puteți să detașați o sesiune de pe un computer, să mergeți acasă și să vă conectați la computerul de la distanță. Când sunteți reconectat, puteți reconecta sesiunea de fundal și o puteți utiliza din nou interactiv.
Care este comanda ecranului?
Comanda screen
este, de asemenea, un multiplexor de terminal și este plină de opțiuni. Pentru detalii despre tot ce puteți face cu el, consultați articolul nostru detaliat.
De data aceasta, ne vom concentra pe tmux
. Pe măsură ce mergem mai departe, vom menționa modul în care screen
gestionează aceeași caracteristică sau funcție.
Un singur lucru ne-a enervat la screen
. Vom acoperi asta când vom ajunge la el și vom vedea dacă tmux
mai bine.
LEGATE: Cum să utilizați comanda ecranului Linux
Instalarea tmux
În timp ce screen
este în general instalat implicit pe distribuțiile Linux populare, tmux
nu este. Pentru a instala tmux
pe Ubuntu, tastați următoarele:
sudo apt-get install tmux
Pe Manjaro poți folosi pacman
:
sudo pacman -Sy tmux
Pe Fedora 31, tmux
este deja instalat.
Pornirea unei sesiuni tmux
Pentru a porni tmux
, trebuie doar să îl tastați și să apăsați Enter:
tmux
Fereastra terminalului va afișa o bară de stare atunci când vă aflați într-o sesiune tmux
.
Partea dreaptă a barei de stare arată numele gazdei și ora și data. Partea stângă arată următoarele informații legate de sesiune:
- [0]: Acesta este numele sesiunii. În mod implicit, sunt numerotate, începând cu zero. Vom acoperi mai jos cum puteți da nume semnificative sesiunilor.
- 0:bash*: 0 indică că aceasta este prima fereastră din această sesiune. Singurul proces care rulează în această sesiune este
bash
. Dacă rulați un program, numele acestuia va apărea aici. Asteriscul (*) înseamnă că aceasta este fereastra la care te uiți. De fiecare dată când creați o nouă fereastră într-o sesiunetmux
, numărul ferestrei acesteia și numele programului care rulează în ea sunt adăugate în bara de stare.
Comanda screen
nu vă oferă o bară de stare în mod implicit. Trebuie să zbori orb și să te bazezi pe inteligența ta pentru a ști ce se întâmplă, ceea ce necesită puțină practică. (Cu excepția cazului în care vă configurați propria bară de stare.)
În plus, nu veți pierde nicio linie de imobiliare pentru ferestre terminale. Desigur, în mod normal ați extinde fereastra terminalului pentru a face folosirea unui multiplexor de terminale utilă. În acest caz, pierderea unei linii pentru bara de stare nu este o problemă prea mare. Am lăsat imaginile ferestrelor terminalului aici la dimensiunea implicită, astfel încât să puteți vedea informațiile.
Comenzile sunt date lui tmux
folosind apăsări de taste și există două părți în acest sens. Mai întâi, apăsați Ctrl+B pentru a atrage atenția lui tmux
. Apoi apăsați rapid următoarea tastă pentru a trimite o comandă către tmux
. Comenzile sunt date prin apăsarea literelor, numerelor, semnelor de punctuație sau tastelor săgeți.
Este același lucru în screen
, cu excepția faptului că apăsați Ctrl+A pentru a-i atrage atenția.
Pentru a închide fereastra, apăsați Ctrl+B, apoi apăsați rapid X. Bara de stare devine chihlimbar. Apoi vi se solicită să confirmați că doriți să omorâți fereastra.
Apăsați Y pentru a închide fereastra sau N dacă vă răzgândiți. Nu trebuie să apăsați Enter după aceea; Y sau N este suficient pentru a vă înregistra alegerea.
Dacă apăsați Y, fereastra se închide. Deoarece aceasta este singura fereastră din această sesiune, sesiunea este încheiată.
Sesiunea tmux
este închisă și revii la linia de comandă de pe care ai lansat tmux
. Veți vedea „[exit]” în fereastra terminalului.
Acest lucru poate părea că afirmă ceea ce este evident, dar este o confirmare că ați închis sesiunea și nu ați lăsat-o detașată și în funcțiune. Vom discuta despre sesiunile de detașare mai jos.
Pornirea unei sesiuni tmux numite
Dacă începeți în mod regulat mai multe sesiuni tmux
, veți aprecia rapid funcționalitatea de a oferi fiecăruia dintre ele un nume semnificativ. Puteți denumi sesiunile și în screen
, dar acestea nu sunt afișate nicăieri în ferestrele de sesiune.
Pentru a porni tmux
cu un nume de sesiune, utilizați comanda new
(sesiune nouă) și opțiunea -s
(numele sesiunii). Sesiunea noastră se va numi „geek-1”, așa că scriem următoarele:
tmux new -s geek-1
Când se încarcă sesiunea tmux
, „geek-1” este afișat ca prima intrare în bara de stare, în extrema stângă.
Adăugarea mai multor Windows
Pentru a crea o fereastră nouă în sesiunea curentă, apăsați Ctrl+B, apoi C. Veți obține o fereastră de terminal goală în sesiunea curentă. Deci vom avea ceva care rulează în această nouă fereastră, să pornim comanda dmesg
cu opțiunea -w
(urmărește):
dmesg -w
Acum avem două ferestre în sesiune; unul rulează de top
, iar celălalt dmesg
. Totuși, putem vedea doar unul câte unul (mai multe despre asta într-un moment).
Aruncă o privire în partea stângă a barei de stare. Suntem încă în sesiunea tmux
„geek-1”. În fereastra zero, top rulează, iar în fereastra unu, dmesg
rulează. Asteriscul (*) după dmesg
ne spune ce fereastră este vizibilă.
Pentru a trece între ferestre, apăsați Ctrl+B, apoi una dintre următoarele taste:
- N : Afișează următoarea fereastră.
- P: Afișează fereastra anterioară.
- 0 la 9: Afișează o fereastră numerotată de la 0 la 9.
De asemenea, puteți alege o fereastră dintr-o listă. Dacă apăsați Ctrl+B și apoi W, va apărea o listă de ferestre.
Pentru a muta bara de evidențiere chihlimbar, apăsați săgețile sus sau jos, Acasă sau Sfârșit. Secțiunea de jos a afișajului arată o previzualizare a conținutului în fereastra evidențiată.
Apăsați Enter pentru a trece la fereastra evidențiată sau Esc pentru a părăsi lista de ferestre fără a comuta.
Detașarea și atașarea sesiunilor
Dacă apăsați Ctrl+B, apoi D, veți detașa sesiunea. Va continua să ruleze în fundal, dar nu veți putea să-l vedeți sau să interacționați cu el.
Am început top
în sesiune, așa că avem un proces care rulează cu care să demonstram. Apoi, apăsăm Ctrl+B, apoi D. Sesiunea dispare și devine o sesiune de fundal.
Revenim la fereastra terminalului original. Există un mesaj de la tmux
care ne spune că sesiunea este detașată. Ne amintește și de numele pe care l-am dat sesiunii. Acest lucru este la îndemână, deoarece acesta este ceea ce folosim pentru a atașa la o sesiune de fundal și apoi o restabilim la una interactivă.
Pentru a atașa o sesiune detașată, vom folosi comanda auto-explicativă attach-session
cu opțiunea -t
(sesiune țintă). Vom furniza, de asemenea, numele sesiunii pe care dorim să o reamintim.
Introducem următoarele:
tmux attach-session -t geek-1
Sesiunea noastră revine și devine din nou o sesiune vizibilă, interactivă.
Orice procese de lungă durată sau continue pe care le-ați lansat înainte de a detașa sesiunea se vor rula în continuare în fundal (dacă nu s-au terminat) când atașați sesiunea.
screen
poate face acest lucru, dar nu la fel de intuitiv.
Gestionarea sesiunilor multiple
Să deschidem o altă fereastră de terminal și să începem o nouă sesiune tmux
numită „geek-2”:
tmux new -s geek-2
În acea sesiune, vom începe dmesg
:
dmesg -w
Acum, avem sesiunea tmux
inițială „geek-1” și una nouă numită „geek-2”.
Bara de stare ne arată că această sesiune se numește „geek-2” și are o fereastră care rulează dmesg
.
Dacă apăsăm Ctrl+B, apoi D, detașăm acea sesiune.
Înapoi în sesiunea tmux
„geek-1”, apăsăm Ctrl+B, apoi S pentru a vedea o listă de sesiuni tmux
.
Pentru a fi clar, aceasta este o listă de sesiuni. Afișajul similar pe care l-am văzut mai devreme era o listă de ferestre într-o singură sesiune.
Puteți muta bara de evidențiere chihlimbar apăsând săgețile sus și jos, Acasă și Sfârșit. Secțiunea de jos afișează o previzualizare a conținutului din sesiunea evidențiată.
Dacă apăsați săgeata dreapta, sunt afișate ferestrele pentru sesiunea evidențiată.
Apăsați Enter pentru a trece la sesiunea sau fereastra evidențiate sau Esc pentru a părăsi lista de sesiuni fără a schimba sesiunile. Dacă selectați o nouă sesiune, cea actuală se detașează, iar cea pe care ați selectat-o este atașată.
Am detașat sesiunea „geek-2” înainte de a face asta. Cu toate acestea, puteți face acest lucru cu sesiunile care sunt încă atașate la ferestrele terminale originale. Când faceți acest lucru, orice modificare a ecranului va apărea simultan în ambele sesiuni tmux
.
Comanda screen
poate face acest lucru, de asemenea, printr-un set similar de comenzi.
Lucrul cu panourile ferestrelor
Dacă apăsați Ctrl+B, apoi ghilimele duble (“”), împărțiți fereastra orizontal în două panouri.
Acest lucru afectează numai fereastra curentă; celelalte din sesiune nu vor fi modificate. Am folosit comanda tmux ls
din panoul de sus pentru a lista ferestrele din această sesiune. Sunt două, iar linia de stare ne spune că suntem în fereastra unu. Dacă sărim la fereastra zero apăsând Ctrl+B și apoi 0 (zero), vedem că este exact așa cum am lăsat-o.
Acestea sunt două linii de comandă independente, nu două vederi într-o singură fereastră; sunt cochilii distincte și separate. Putem arăta acest lucru rulând o comandă diferită în fiecare panou.
Introducem următoarele:
uname -a
ls -hl
Pentru a trece de la un panou la altul, apăsați Ctrl+B, apoi fie săgeata sus, jos, stânga sau dreapta.
Dacă apăsați Ctrl+B și apoi semnul procentual ( %)
, panoul curent se împarte vertical.
Apăsați Ctrl+B, apoi Q pentru a face ca tmux
să clipească scurt numărul fiecărui panou.
Aceste numere sunt folosite în solicitări și mesaje de la tmux
. Apăsați Ctrl+B, apoi X pentru a închide panoul curent. Bara de stare se schimbă în chihlimbar și vi se solicită să confirmați că doriți să închideți acel număr de panou. Apăsați Y pentru a elimina panoul sau N pentru a lăsa lucrurile așa cum sunt.
Dacă apăsați Y, panoul este eliminat.
Comanda screen
are și panouri, dar, din nou, acestea sunt mai puțin intuitive de utilizat. Lucrul care ne enervează la screen
este că dacă detașați o sesiune cu panouri, acestea dispar când reatașați acea sesiune. Acest lucru îmbătrânește foarte repede.
A Ctrl+B Cheat Sheet
Am inclus mai jos o foaie de cheat cu diferitele comenzi pe care le puteți utiliza în tmux
.
Comenzi de sesiune
- S: Listează sesiunile.
- $: Redenumiți sesiunea curentă.
- D: Detașează sesiunea curentă.
- Ctrl+B, apoi ?: Afișează pagina de ajutor în
tmux
.
Comenzi pentru fereastră
- C: Creați o nouă fereastră.
- ,: Redenumiți fereastra curentă.
- W: Enumeră ferestrele.
- N: Treceți la următoarea fereastră.
- P: Treceți la fereastra anterioară.
- De la 0 la 9: Treceți la numărul de fereastră specificat.
Comenzi din panoul
- %: Creați o divizare orizontală.
- „: Creați o divizare verticală.
- H sau săgeata stânga: deplasați-vă în panoul din stânga.
- I sau Săgeata dreapta: deplasați-vă în panoul din dreapta.
- J sau săgeată în jos: deplasați-vă în panoul de mai jos.
- K sau săgeata sus: deplasați-vă în panoul de mai sus.
- Î : Afișați pe scurt numerele panourilor.
- O: Deplasați-vă prin panouri în ordine. Fiecare apăsare te duce la următoarea, până când le faci buclă pe toate.
- }: Schimbați poziția panoului curent cu următorul.
- {: Schimbați poziția panoului curent cu cea precedentă.
- X: Închideți panoul curent.
Cum se compară
În ceea ce privește funcționalitatea, screen
și tmux
funcționează în mod similar și oferă aceleași caracteristici principale. Modul în care accesați aceste funcții este semnificativ diferit. tmux
oferă modalități mai elegante și mai confortabile de a ajunge la diferitele funcții. Cu toate acestea, aceasta nu este singura diferență.
Capacitatea de a redenumi sesiunile și ferestrele în tmux
este clară, iar faptul că reține panourile atunci când reatașați o sesiune este un schimbător de joc.
screen
, pe de altă parte, pierde complet panourile atunci când detașați și reatașați o sesiune. Acest lucru este aproape suficient de enervant încât să te facă să eviți detașarea în primul rând.
Există mult mai mult la tmux
, inclusiv capabilitățile sale incredibil de flexibile de scripting. Îți datorezi ție să-l verifici.
Comenzi Linux | ||
Fișiere | tar · pv · cat · tac · chmod · grep · diff · sed · ar · om · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · tip · redenumire · zip · dezarhivare · montare · demontare · instalare · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm | |
Procese | alias · ecran · sus · frumos · renice · progres · strace · systemd · tmux · chsh · istoric · la · lot · gratuit · care · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · da · kill · sleep · sudo · su · time · groupadd · usermod · grupuri · lshw · shutdown · repornire · stop · poweroff · passwd · lscpu · crontab · data · bg · fg | |
Rețele | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
LEGATE: Cele mai bune laptopuri Linux pentru dezvoltatori și entuziaști