Hoe tmux te gebruiken op Linux (en waarom het beter is dan Scherm)

  • Dave McKay

    @TheGurkha

  • 14 mei 2020, 8: 00am EDT
zouden afgeschud hebben/

het Linux tmux commando is een terminal multiplexer, zoals screen. De voorstanders zijn talrijk en vocaal, dus we besloten om de twee te vergelijken. Is tmux echt beter, of is het gewoon een geval van de voorkeur geven aan wat je weet?

tmux vs. scherm

zowel de commando ‘ s tmux als GNU screen zijn terminalmultiplexers. Hiermee kunt u meerdere vensters binnen een enkel terminalvenster hebben, en heen en weer springen tussen hen. Een venster kan worden onderverdeeld in panelen, die elk een onafhankelijke opdrachtregel geven.

u kunt ook een sessie loskoppelen en het wordt een headless entiteit die op de achtergrond draait—u kunt zelfs het terminalvenster sluiten dat de sessie heeft gestart. Wanneer u klaar bent, kunt u een nieuw terminalvenster openen en de nog lopende sessie opnieuw bevestigen. Je kunt dit ook doen via een SSH verbinding.

advertentie

u kunt een sessie op één computer loskoppelen, naar huis gaan en inloggen op de externe computer. Wanneer u opnieuw verbonden bent, kunt u de achtergrondsessie opnieuw koppelen en deze interactief opnieuw gebruiken.

Wat is het schermcommando?

het screen commando is ook een terminal multiplexer, en het zit boordevol opties. Voor de lowdown over alles wat je kunt doen met het, check out onze diepgaande artikel.

deze keer concentreren we ons op tmux. Naarmate we verder gaan, zullen we vermelden hoe screen dezelfde functie of functie behandelt.

advertentie

slechts één ding ergerde ons aan screen. We zullen dat behandelen als we er zijn, en kijken of tmux het beter doet.

gerelateerd: hoe Linux ‘ s schermcommando te gebruiken

tmux installeren

terwijl screen standaard wordt geïnstalleerd op populaire Linux-distributies, is tmux dat niet. om tmux op Ubuntu te installeren, typt u het volgende::

sudo apt-get install tmux

op Manjaro kunt u pacman:

sudo pacman -Sy tmux

op Fedora 31 is tmux al geïnstalleerd.

een tmux-sessie starten

om tmux te starten, typ het en druk op Enter:

tmux

het terminalvenster zal een statusbalk tonen wanneer u in een tmux sessie zit.

de rechterkant van de statusbalk toont de hostnaam, de tijd en datum. De linkerkant toont de volgende sessie-gerelateerde informatie:

  • : Dit is de sessienaam. Standaard zijn ze genummerd, beginnend met nul. We behandelen hoe je betekenisvolle namen kunt geven aan sessies hieronder.
  • 0: bash*: de 0 geeft aan dat dit het eerste venster in deze sessie is. Het enige proces dat in deze sessie draait is bash. Als u een programma uitvoert, verschijnt de naam hier. Het sterretje ( * ) betekent dat dit het venster is waar je naar kijkt. Elke keer dat u een nieuw venster maakt in een tmux sessie, worden het vensternummer en de naam van het programma dat erin draait toegevoegd aan de statusbalk.

het commando screen geeft u geen statusbalk. Je moet blind vliegen en vertrouwen op je verstand om te weten wat er aan de hand is, wat een beetje oefening vereist.

advertentie

aan de positieve kant, zult u geen lijn van terminal window real estate verliezen. Natuurlijk, je zou normaal uitbreiden van uw terminal venster te maken met behulp van een terminal multiplexer de moeite waard. In dat geval, het verlies van een regel voor de statusbalk is niet veel van een probleem. We hebben de afbeeldingen van de terminalvensters hier op de standaardgrootte gelaten, zodat u de informatie kunt zien.

opdrachten worden gegeven aan tmux met behulp van toetsaanslagen, en er zijn twee delen. Eerst druk je op Ctrl + B om de aandacht van tmuxte krijgen. U drukt vervolgens snel op de volgende toets om een opdracht naartmuxte sturen. Commando ‘ s worden gegeven door op letters, cijfers, leestekens of pijltjestoetsen te drukken.

het is hetzelfde in screen, behalve dat u op Ctrl+A drukt om zijn aandacht te krijgen.

om het venster te sluiten, drukt u op Ctrl+B en drukt u snel op X. De statusbalk wordt amber. Vervolgens wordt u gevraagd om te bevestigen dat u het venster wilt uitschakelen.

advertentie

druk op Y om het venster te sluiten of N Als u van gedachten verandert. U hoeft daarna niet op Enter te drukken; Y of N is voldoende om uw keuze te registreren.

als u op Y drukt, wordt het venster gesloten. Omdat dit het enige venster in deze sessie is, wordt de sessie beëindigd.

de tmux sessie is gesloten en u wordt teruggebracht naar de opdrachtregel van waaruit u tmuxhebt gestart. Je ziet “” in het terminalvenster.

dit lijkt misschien alsof het duidelijk is, maar het is een bevestiging dat je de sessie hebt gesloten en niet hebt losgelaten en draait. We bespreken de loskoppelsessies hieronder.

het starten van een benoemde tmux sessie

als u regelmatig meerdere tmux sessies start, zult u snel de functionaliteit waarderen om elk van hen een betekenisvolle naam te geven. U kunt sessies ook een naam geven in screen, maar ze worden nergens in het sessievenster weergegeven.

advertentie

om tmux met een sessienaam te starten, gebruikt u de opdracht new (nieuwe sessie) en de optie -s (sessienaam). Onze sessie gaat “geek-1” heten, dus we typen het volgende:

tmux new -s geek-1

wanneer de tmux sessie wordt geladen, wordt “geek-1” weergegeven als het eerste item in de statusbalk, helemaal links.

meer vensters

om een nieuw venster in de huidige sessie aan te maken, drukt u op Ctrl+B en vervolgens op C. U krijgt een leeg terminalvenster in de huidige sessie. Dus we zullen iets draaien in dit nieuwe venster, laten we het dmesg Commando starten met de -w (follow) optie:

dmesg -w
advertentie

nu hebben we twee vensters in de sessie; een draait top, en de andere dmesg. We kunnen er echter maar één tegelijk zien (meer daarover in een moment).

kijk naar de linkerkant van de statusbalk. We zitten nog steeds in de” geek-1 ” tmux sessie. In venster nul draait de top, en in venster één draait dmesg. Het sterretje ( * ) na dmesg geeft aan welk venster zichtbaar is.

om tussen vensters te springen, drukt u op Ctrl + B, en dan een van de volgende toetsen:

  • N: toon het volgende venster.
  • P: toon het vorige venster.
  • 0 t / m 9: een venster tonen dat genummerd is van 0 t / m 9.

u kunt ook een venster uit een lijst kiezen. Als u op Ctrl+B en vervolgens W drukt, wordt een lijst met windows weergegeven.

advertentie

om de amberkleurige markeerbalk te verplaatsen, drukt u op de pijlen omhoog of omlaag, Home of End. Het onderste gedeelte van het scherm toont een voorbeeld van de inhoud in het gemarkeerde venster.

druk op Enter om naar het gemarkeerde venster te gaan, of Esc om de vensterlijst te verlaten zonder te schakelen.

sessies losmaken en bijvoegen

als u op Ctrl+B en vervolgens D drukt, zult u de sessie losmaken. Het zal blijven draaien op de achtergrond, maar je zult niet in staat zijn om te zien of interactie met het.

we zijn top gestart in de sessie, dus we hebben een lopend proces om mee te demonstreren. Vervolgens drukken we op Ctrl + B en vervolgens D. de sessie verdwijnt en wordt een achtergrondsessie.

advertentie

we keren terug naar het oorspronkelijke terminalvenster. Er is een bericht van tmux waarin staat dat de sessie is losgelaten. Het herinnert ons ook aan de naam die we aan de sessie gaven. Dit is handig omdat dat is wat we gebruiken om te koppelen aan een achtergrond sessie, en vervolgens te herstellen naar een interactieve.

om een losstaande sessie bij te voegen, gebruiken we het zelfverklarende attach-session commando met de -t (target session) optie. We geven ook de naam van de sessie die we willen herinneren.

we typen het volgende:

tmux attach-session -t geek-1

onze sessie keert terug en wordt weer een zichtbare, interactieve sessie.

alle langdurige of voortdurende processen die u hebt gestart voordat u de sessie loskoppelt, zullen nog steeds op de achtergrond draaien (tenzij ze klaar zijn) wanneer u de sessie toevoegt.

screen kan dit, maar niet zo intuïtief.

meerdere sessies afhandelen

laten we een ander terminalvenster openen en een nieuwe tmux sessie starten met de naam “geek”-2″:

tmux new -s geek-2

In die sessie, zullen we beginnen dmesg:

dmesg -w
advertentie

nu hebben we onze originele “geek-1” tmux sessie, en een nieuwe genaamd “geek-2.”

de statusbalk toont ons dat deze sessie “geek-2” heet, en het heeft één venster dat dmesgdraait.

als we op Ctrl+B drukken en dan D, maken we die sessie los.

advertentie

terug in de “geek-1” tmux sessie, drukken we op Ctrl + B, en dan S om een lijst van tmux sessies te zien.

voor alle duidelijkheid, dit is een lijst van sessies. De soortgelijke display die we eerder zagen was een lijst van Vensters in een enkele sessie.

u kunt de amberkleurige markeerbalk verplaatsen door op de pijlen omhoog en omlaag, Home en End te drukken. Het onderste gedeelte toont een voorbeeld van de inhoud in de gemarkeerde sessie.

als u op de rechterpijl drukt, worden de vensters voor de gemarkeerde sessie weergegeven.

advertentie

druk op Enter om naar de gemarkeerde sessie of het venster of Esc te gaan om de sessielijst te verlaten zonder sessies te wijzigen. Als u een nieuwe sessie selecteert, wordt uw huidige sessie losgemaakt en wordt de sessie die u hebt geselecteerd toegevoegd.

we hebben de “geek-2” sessie losgemaakt voordat we dit deden. U kunt dit echter doen met sessies die nog steeds verbonden zijn met hun oorspronkelijke terminalvensters. Als u dat doet, zullen alle schermwijzigingen gelijktijdig verschijnen in beide tmux sessies.

het screen commando kan dit ook doen via een vergelijkbare set commando ‘ s.

werken met Venstervensters

als u op Ctrl+B drukt en vervolgens dubbele aanhalingstekens ( “” ), splitst u het venster horizontaal in twee vensters.

advertentie

dit heeft alleen invloed op het huidige venster; de andere in de sessie zullen niet worden gewijzigd. We hebben het tmux ls commando in het bovenste deelvenster gebruikt om de vensters in deze sessie weer te geven. Er zijn er twee, en de statusregel vertelt ons dat we in venster één zitten. Als we naar venster nul springen door op Ctrl+B te drukken en dan 0 (nul), zien we dat het net is zoals we het hebben verlaten.

dit zijn twee onafhankelijke commandoregels, geen twee weergaven in één venster; het zijn verschillende en afzonderlijke shells. We kunnen dit laten zien door een ander commando uit te voeren in elk paneel.

we typen het volgende:

uname -a

ls -hl

als u van het ene paneel naar het andere wilt gaan, drukt u op Ctrl+B en vervolgens op de pijl Omhoog, Omlaag, Links of rechts.

als u op Ctrl+B drukt en het percentageteken (%) het splitst het huidige paneel verticaal.

advertentie

druk op Ctrl + B, en vervolgens Q om tmux kort het nummer van elk paneel te laten knipperen.

deze nummers worden gebruikt in prompts en berichten van tmux. Druk op Ctrl + B en vervolgens op X om het huidige deelvenster te sluiten. De statusbalk verandert in amber en u wordt gevraagd te bevestigen dat u dat paneelnummer wilt sluiten. Druk op Y om het paneel te verwijderen, of N om de dingen te laten zoals ze zijn.

als u op Y drukt, wordt het paneel verwijderd.

het screen commando heeft ook deelvensters, maar, nogmaals, ze zijn minder intuïtief te gebruiken. Wat ons ergert aan screen is dat als je een sessie loskoppelt met deelvensters, ze verdwijnen als je die sessie weer vastzet. Dit wordt erg snel oud.

a Ctrl + B spiekbriefje

hieronder hebben we een spiekbriefje opgenomen met de verschillende commando ‘ s die u kunt gebruiken in tmux.

Sessiecommando ‘ s

  • S: sessies weergeven.
  • $: huidige sessie hernoemen.
  • D: maak de huidige sessie Los.
  • Ctrl + B, en dan ?: Hulppagina tonen in tmux.

venstercommando ‘ s

  • C: Maak een nieuw venster aan.
  • ,: Hernoem het huidige venster.
  • W: Toon de vensters.
  • N: Ga naar het volgende venster.
  • P: naar het vorige venster.
  • 0 tot 9: Ga naar het opgegeven vensternummer.

Paneelcommando ‘ s

  • %: Maak een horizontale splitsing.
  • “: Maak een verticale splitsing.
  • H of pijl naar links: Verplaats naar het paneel aan de linkerkant.
  • I of pijl naar rechts: schuif naar het rechterdeelvenster.
  • J of Pijl omlaag: Verplaats naar het onderstaande Paneel.
  • K of Pijl omhoog: Verplaats naar het paneel hierboven.
  • Q: toon kort paneelnummers.
  • O: in volgorde door panelen gaan. Elke pers neemt je mee naar de volgende, totdat je ze allemaal doorloopt.
  • }: de positie van het huidige paneel omwisselen met de volgende.
  • {: de positie van het huidige paneel omwisselen met het vorige.
  • X: Sluit het huidige paneel.

hoe ze

in termen van functionaliteit vergelijken, screen en tmux presteren beide op dezelfde manier en bieden dezelfde hoofdkenmerken. Het is de manier waarop je toegang krijgt tot deze functies die duidelijk anders is. tmux biedt slicker, meer comfortabele manieren om de verschillende functies te bereiken. Dat is echter niet het enige verschil.

advertentie

de mogelijkheid om sessies en vensters te hernoemen in tmux is netjes, en het feit dat het de vensters behoudt wanneer u een sessie opnieuw koppelt, verandert het spel.

screen, aan de andere kant, volledig verliest ruiten wanneer u loskoppelen en opnieuw vastmaken van een sessie. Dit is bijna vervelend genoeg om te voorkomen dat u ontkoppelen in de eerste plaats.

er is zoveel meer aan tmux, inclusief de ongelooflijk flexibele scripting mogelijkheden. Je bent het aan jezelf verplicht om het te controleren.

Dave McKay gebruikte voor het eerst computers toen geponste papieren tape in de mode was, en sindsdien is hij aan het programmeren. Na meer dan 30 jaar in de IT-industrie, is hij nu een fulltime technologie journalist. Tijdens zijn carrière werkte hij als freelance programmeur, manager van een internationaal softwareontwikkelingsteam, IT-serviceprojectmanager en recentelijk als functionaris voor gegevensbescherming. Dave is een Linux evangelist en open source advocaat.Lees De Volledige Bio “