Hoe tmux te gebruiken op Linux (en waarom het beter is dan Scherm)
- Dave McKay
@TheGurkha
- 14 mei 2020, 8: 00am EDT
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.
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.
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 eentmux
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.
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 tmux
te krijgen. U drukt vervolgens snel op de volgende toets om een opdracht naartmux
te 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.
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 tmux
hebt 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.
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
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.
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.
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
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 dmesg
draait.
als we op Ctrl+B drukken en dan D, maken we die sessie los.
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.
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.
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.
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.
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.