Cum se utilizează tmux pe Linux (și de ce este mai bun decât ecranul)

  • Dave McKay

    @ TheGurkha

  • 14 mai 2020, 8: 00AM EDT
fatmawati achmad zaenuri/

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.

publicitate

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.

publicitate

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 sesiune tmux, 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ă.

publicitate

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.

publicitate

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.

publicitate

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
publicitate

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.

publicitate

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.

publicitate

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
publicitate

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.

publicitate

î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ă.

publicitate

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.

publicitate

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ă.

publicitate

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ță.

publicitate

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
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ă”