Cum se utilizează tmux pe Linux (și de ce este mai bun decât ecranul)
- Dave McKay
@ TheGurkha
- 14 mai 2020, 8: 00AM EDT
comanda Linux tmux
este un multiplexor terminal, cum ar fi screen
. Avocații săi sunt mulți și vocali, așa că am decis să le comparăm pe cele două. Este tmux
într-adevăr mai bine, sau este doar un caz de a prefera ceea ce știi?
tmux vs.ecran
atât comenzile tmux
, cât și GNU screen
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 geamuri, fiecare dintre acestea oferindu-vă 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ă terminal și reatașați sesiunea încă în desfășurare. Puteți face acest lucru și printr-o conexiune SSH.
puteți detașa o sesiune pe un computer, du-te acasă, și conectați-vă la computer la distanță. Când vă Reconectați, puteți reatașa sesiunea de fundal și o puteți utiliza din nou interactiv.
care este comanda ecranului?
comanda screen
este, de asemenea, un multiplexor terminal și este dotat cu opțiuni. Pentru scăderea a tot ceea ce puteți face cu acesta, consultați articolul nostru aprofundat.
de data aceasta, ne vom concentra pe tmux
. Pe măsură ce continuăm, vom menționa modul în care screen
gestionează aceeași caracteristică sau funcție.
doar un singur lucru ne enervat despre screen
. Vom acoperi că atunci când vom ajunge la ea, și a vedea dacă tmux
tarifele mai bine.
RELATED: cum se utilizează comanda ecranului Linux
instalarea tmux
în timp ce screen
este în general instalat în mod 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 puteți utiliza pacman
:
sudo pacman -Sy tmux
pe Fedora 31, tmux
este deja instalat.
pornirea unei sesiuni tmux
pentru a porni tmux
, tastați-o și 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 afișează numele gazdei și ora și data. Partea stângă prezintă următoarele informații legate de sesiune:
- : acesta este numele sesiunii. În mod implicit, acestea sunt numerotate, începând cu zero. Vom acoperi modul în care puteți da nume semnificative sesiunilor de mai jos.
- 0:bash*: 0 indică faptul 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 fereastră nouă într-o sesiunetmux
, numărul ferestrei și numele programului care rulează în ea sunt adăugate la bara de stare.
comanda screen
nu vă oferă o bară de stare. Trebuie să zbori orb și să te bazezi pe inteligența ta pentru a ști ce se întâmplă, ceea ce necesită un pic de practică.
pe partea de plus, nu veți pierde o linie de ferestre terminale Imobiliare. Desigur, în mod normal, vă extindeți fereastra terminalului pentru a face utilă utilizarea unui multiplexor terminal. În acest caz, pierderea unei linii pentru bara de stare nu este o problemă. Am lăsat imaginile ferestrelor terminale aici la dimensiunea implicită, astfel încât să puteți vedea informațiile.
Comenzile sunt date tmux
folosind apăsări de taste și există două părți în acest sens. În primul rând, apăsați Ctrl+B pentru a obține atenția tmux
. Apoi apăsați rapid tasta următoare pentru a trimite o comandă latmux
. Comenzile sunt date prin apăsarea literelor, numerelor, semnelor de punctuație sau tastelor săgeată.
este la fel î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ă ucideț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 veți reveni la linia de comandă din care ați lansat tmux
. Veți vedea „” în fereastra terminalului.
acest lucru ar putea 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 alergată. Vom discuta despre sesiunile de detașare de mai jos.
începerea unei sesiuni tmux numite
dacă începeți în mod regulat mai multe sesiuni tmux
, veți aprecia rapid funcționalitatea de a le da fiecăruia un nume semnificativ. Puteți denumi sesiunile și în screen
, dar acestea nu sunt afișate nicăieri în ferestrele sesiunii.
pentru a începe tmux
cu un nume de sesiune, utilizați comanda new
(sesiune nouă) și opțiunea -s
(nume sesiune). Sesiunea noastră se va numi „geek-1”, așa că tastăm 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 ferestre
pentru a crea o fereastră nouă în sesiunea curentă, apăsați Ctrl+B, apoi C. Veți obține o fereastră terminal goală în sesiunea curentă. Deci, vom avea ceva care rulează în această fereastră nouă, să începem comanda dmesg
cu opțiunea -w
(follow:
dmesg -w
acum avem două ferestre în sesiune; unul se execută top
, iar celălalt dmesg
. Putem vedea doar unul la un moment dat, deși (mai mult pe care într-un moment).
aruncați o privire în partea stângă a barei de stare. Suntem încă în sesiunea „geek-1” tmux
. În fereastra zero, sus se execută, iar în fereastra unu, dmesg
se execută. Asteriscul ( * ) după dmesg
ne spune ce fereastră este vizibilă.
pentru a sări între ferestre, apăsați Ctrl + B, apoi una dintre tastele următoare:
- n: afișează următoarea fereastră.
- P: afișează fereastra anterioară.
- 0 până la 9: afișați 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, apare 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. Acesta va continua să ruleze în fundal, dar nu veți putea vedea sau interacționa cu acesta.
am început top
în sesiune, așa că avem un proces de rulare cu care să demonstrăm. Apoi, apăsăm Ctrl + B, apoi D. sesiunea dispare și devine o sesiune de fundal.
ne întoarcem la fereastra terminalului original. Există un mesaj de la tmux
care ne spune că sesiunea este detașată. De asemenea, ne amintește de numele pe care l-am dat sesiunii. Acest lucru este util pentru că asta folosim pentru a atașa la o sesiune de fundal și apoi pentru a o restabili 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 oferi, de asemenea, numele sesiunii pe care dorim să o reamintim.
tastăm următoarele:
tmux attach-session -t geek-1
sesiunea noastră revine și devine din nou o sesiune vizibilă, interactivă.
orice proces de lungă durată sau continuu pe care l-ați lansat înainte de a detașa sesiunea va continua să ruleze în fundal (cu excepția cazului în care au terminat) atunci când atașați sesiunea.
screen
poate face acest lucru, dar nu la fel de intuitiv.
gestionarea mai multor sesiuni
să deschidem o altă fereastră de terminal și să începem o nouă sesiune tmux
numită „geek-2”:
tmux new -s geek-2
în această sesiune, vom începe dmesg
:
dmesg -w
acum, ne-am luat nostru Original „geek-1” tmux
sesiune, și unul 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 și apoi D, detașăm acea sesiune.
înapoi în sesiunea „geek-1” tmux
, apăsăm Ctrl+B și 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 a fost 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 în sesiunea evidențiată.
dacă apăsați săgeata spre dreapta, se afișează ferestrele pentru sesiunea evidențiată.
apăsați Enter pentru a trece la sesiunea sau fereastra evidențiată sau Esc pentru a părăsi lista de sesiuni fără a schimba sesiunile. Dacă selectați o sesiune nouă, cea curentă se detașează, iar cea selectată este atașată.
am detașat sesiunea „geek-2” înainte de a face acest lucru. Cu toate acestea, puteți face acest lucru cu sesiuni care sunt încă atașate la ferestrele terminale originale. Când faceți acest lucru, orice modificări ale ecranului vor apărea simultan în ambele sesiuni tmux
.
comanda screen
poate face acest lucru, de asemenea, printr-un set similar de comenzi.
lucrul cu geamurile
dacă apăsați Ctrl+B, apoi ghilimele duble („”), împărțiți fereastra orizontal în două geamuri.
aceasta 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. Există două, iar linia de stare ne spune că suntem în prima fereastră. Dacă trecem la fereastra zero apăsând Ctrl + B și apoi 0 (zero), vedem că este exact așa cum l-am lăsat.
acestea sunt două linii de comandă independente, nu două vizualizări într-o singură fereastră; sunt cochilii distincte și separate. Putem arăta acest lucru executând o comandă diferită în fiecare panou.
tastăm 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, apoi semnul procentual (%)
împarte panoul curent pe verticală.
apăsați Ctrl+B, și apoi Q pentru a face tmux
flash scurt numărul de fiecare panou.
aceste numere sunt utilizate î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 numărul panoului respectiv. 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 geamuri, dar, din nou, sunt mai puțin intuitive de utilizat. Lucrul care ne enervează în legătură cu screen
este că dacă detașați o sesiune cu geamuri, acestea dispar atunci când reatașați acea sesiune. Acest lucru devine vechi foarte repede.
a Ctrl+B Cheat Sheet
am inclus o foaie de cheat a diferitelor comenzi pe care le puteți utiliza în tmux
de mai jos.
comenzi de sesiune
- S: listează sesiunile.
- $: redenumiți sesiunea curentă.
- D: detașați sesiunea curentă.
- Ctrl+B, și apoi ?: Afișează pagina de ajutor în
tmux
.
comenzi ferestre
- C: creați o fereastră nouă.
- ,: Redenumiți fereastra curentă.
- W: listați ferestrele.
- N: treceți la fereastra următoare.
- P: treceți la fereastra anterioară.
- 0 la 9: treceți la numărul ferestrei specificat.
comenzi panou
- %: creați o împărțire orizontală.
- „: creați o divizare verticală.
- H sau Săgeată stânga: Deplasați-vă la panoul din stânga.
- i sau Săgeată dreapta: Deplasați-vă la panoul din dreapta.
- J sau Săgeată în jos: Deplasați-vă la panoul de mai jos.
- K sau Săgeată în sus: deplasați-vă la panoul de mai sus.
- Î: afișați pe scurt numerele panoului.
- O: deplasați-vă prin geamuri În ordine. Fiecare apăsare vă duce la următoarea, până când bucla prin toate acestea.
- }: schimbați poziția panoului curent cu următoarea.
- {: schimbați poziția panoului curent cu cea anterioară.
- X: închideți panoul curent.
cum se compară
în ceea ce privește funcționalitatea, screen
și tmux
ambele 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 ușoare și mai confortabile de a ajunge la diferitele funcții. Totuși, aceasta nu este singura diferență.
capacitatea de a redenumi sesiuni și ferestre în tmux
este curat, și faptul că acesta păstrează geamurile atunci când reatașați o sesiune este un schimbător de joc.
screen
, pe de altă parte, pierde complet geamurile atunci când detașați și reatașați o sesiune. Acest lucru este aproape suficient de enervant pentru a vă face să evitați detașarea în primul rând.
există mult mai mult la tmux
, inclusiv capacitățile sale de scripting incredibil de flexibile. Îți ești dator să verifici.
Dave McKay a folosit pentru prima dată computerele când banda de hârtie perforată era în vogă și de atunci programează. După peste 30 de ani în industria IT, el este acum un jurnalist de tehnologie full-time. În timpul carierei sale, a lucrat ca programator independent, manager al unei echipe internaționale de dezvoltare software, manager de proiect de servicii IT și, cel mai recent, ca ofițer de protecție a datelor. Dave este un evanghelist Linux și avocat open source.Citiți Biografia Completă”