Hoe te Gebruiken tmux op Linux (en Waarom het Beter is Dan Het Scherm)
- Dave McKay
@TheGurkha
- 14 Mei 2020, 8:00 uur EDT
De 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
- Wat is het schermcommando?
- tmux installeren
- een tmux-sessie starten
- het starten van een benoemde tmux sessie
- meer vensters toevoegen
- loskoppelen en toevoegen van sessies
- omgaan met meerdere sessies
- werken met Venstervensters
- A Ctrl+B spiekbrief
- Sessiecommando ‘ s
- venstercommando ‘ s
- Paneelcommando ‘ s
- hoe ze
tmux vs. scherm
zowel de opdrachten tmux
en 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
over het algemeen standaard wordt geïnstalleerd op populaire Linux-distributies, tmux
is 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, tmux
is al geïnstalleerd.
een tmux-sessie starten
om tmux
te starten, typ het gewoon en druk op Enter:
tmux
het terminalvenster zal een statusbalk tonen wanneer u zich in een tmux
sessie bevindt.
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 screen
commando 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 regel 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.
commando ‘ s worden gegeven aan tmux
met behulp van toetsaanslagen, en er zijn twee delen. Eerst druk je op Ctrl + B om tmux
’s aandacht 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 de 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 of N te sluiten 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.
detmux
sessie is gesloten en u wordt teruggebracht naar de opdrachtregel van waaruit utmux
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 weergegeven in de sessievensters.
om tmux
met een sessienaam te starten, gebruikt u de opdracht new
(nieuwe sessie) en de optie -s
(sessienaam). Onze sessie wordt “geek-1” genoemd, dus we typen het volgende:
tmux new -s geek-1
wanneer de tmux
sessie wordt geladen, wordt” geek-1 ” weergegeven als de eerste regel in de statusbalk, helemaal links.
meer vensters toevoegen
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 beginnen met de dmesg
commando 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).
bekijk 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: toon een venster genummerd 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.
loskoppelen en toevoegen van sessies
Als u op Ctrl+B en vervolgens D drukt, zult u de sessie loskoppelen. 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
dat ons vertelt dat de sessie is ontkoppeld. 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 de 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 doen, maar niet zo intuïtief.
omgaan met meerdere sessies
laten we een ander terminalvenster openen en een nieuwe tmux
sessie starten genaamd “geek-2”:
tmux new -s geek-2
In die sessie starten we 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 met 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 pijltjes 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 soortgelijke 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 anderen 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 aparte shells. We kunnen dit laten zien door een ander commando uit te voeren in elk paneel.
We typen het volgende:
uname -a
ls -hl
om van het ene paneel naar het andere te gaan, drukt u op Ctrl+B, en dan de pijl Omhoog, Omlaag, Links of rechts.
Als u op Ctrl+B drukt en vervolgens 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 getallen 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 wanneer je die sessie opnieuw koppelt. Dit wordt erg snel oud.
A Ctrl+B spiekbrief
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 weergeven 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 aan.
- “: Maak een verticale splitsing aan.
- 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: naar het paneel hierboven.
- Q: toon kort paneelnummers.
- O: Verplaats in volgorde door panelen. Elke pers neemt je mee naar de volgende, totdat je ze allemaal doorloopt.
- }: de positie van het huidige paneel omwisselen met het volgende.
- {: de positie van het huidige paneel omwisselen met het vorige.
- X: Sluit het huidige paneel.
hoe ze
vergelijken in termen van functionaliteit, screen
en tmux
presteren beide op dezelfde manier en bieden dezelfde hoofdfuncties. 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, is een game changer.
screen
, aan de andere kant, verliest volledig deelvensters wanneer u een sessie loskoppelt en opnieuw koppelt. 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.