Articles

Hur man använder tmux på Linux (och varför det är bättre än skärmen)

  • Dave McKay

    @TheGurkha

  • 14 maj 2020, 8:00am EDT
fatmawati achmad zaenuri/

Linux tmux kommandot är en terminalmultiplexer, som screen. Dess förespråkare är många och vokala, så vi bestämde oss för att jämföra de två. Är tmux verkligen bättre, eller är det bara ett fall att föredra vad du vet?

tmux vs. skärm

både kommandonatmux och GNUscreen är terminalmultiplexorer. De låter dig ha flera fönster i ett enda terminalfönster och hoppa fram och tillbaka mellan dem. Ett fönster kan delas in i rutor, som alla ger dig en oberoende kommandorad.

Du kan också ta bort en session och det blir en huvudlös enhet som körs i bakgrunden—Du kan till och med stänga terminalfönstret som startade det. När du är redo kan du öppna ett nytt terminalfönster och sätta tillbaka sessionen som fortfarande körs. Du kan också göra detta via en SSH-anslutning.

annons

Du kan koppla bort en session på en dator, gå hem och logga in på fjärrdatorn. När du ansluter igen kan du sätta tillbaka bakgrundssessionen och använda den interaktivt igen.

vad är skärmkommandot?

kommandotscreen är också en terminalmultiplexer, och den är fylld med alternativ. För lowdown på allt du kan göra med det, kolla in vår djupgående artikel.

den här gången kommer vi att koncentrera oss på tmux. När vi går vidare kommer vi att nämna hur screen hanterar samma funktion eller funktion.

annons

bara en sak irriterade oss om screen. Vi täcker det när vi kommer till det och ser om tmux priser bättre.

RELATERAD: Hur man använder Linuxs skärmkommando

installera tmux

medan screen vanligtvis installeras som standard på populära Linux-distributioner,tmux är det inte. för att installeratmux på Ubuntu skriver du följande:

sudo apt-get install tmux

på Manjaro kan du använda pacman:

sudo pacman -Sy tmux

På Fedora 31 är tmux redan installerat.

starta en tmux-Session

för att starta tmux, skriv bara in den och tryck på Enter:

tmux

terminalfönstret visar en statusfält när du är i en tmux session.

på höger sida av statusfältet visas värdnamnet samt tid och datum. Den vänstra sidan visar följande sessionsrelaterad information:

  • : Detta är sessionens namn. Som standard är de numrerade, börjar med noll. Vi täcker hur du kan ge meningsfulla namn till sessioner nedan.
  • 0:bash*: 0 indikerar att detta är det första fönstret i den här sessionen. Den enda processen som körs i den här sessionen är bash. Om du kör ett program visas dess namn här. Asterisken ( * ) betyder att det här är fönstret du tittar på. Varje gång du skapar ett nytt fönster i en tmux – session läggs dess fönsternummer och namnet på programmet som körs i det till statusfältet.

kommandotscreen ger dig inte en statusfält. Du måste flyga blind och lita på dina wits för att veta vad som händer, vilket tar lite övning.

annons

på plussidan kommer du inte att förlora en rad terminalfönsterfastigheter. Naturligtvis skulle du normalt utöka ditt terminalfönster för att göra det möjligt att använda en terminalmultiplexer. I så fall är förlusten av en rad för statusfältet inte mycket av ett problem. Vi har lämnat bilderna på terminalfönstren här i standardstorleken så att du kan se informationen.

kommandon ges till tmux med tangenttryckningar, och det finns två delar till detta. Först trycker du på Ctrl + B för att få tmuxuppmärksamhet. Du trycker sedan snabbt på Nästa för att skicka ett kommando tilltmux. Kommandon ges genom att trycka på bokstäver, siffror, skiljetecken eller piltangenter.

det är detsamma i screen, förutom att du trycker på Ctrl+A för att få uppmärksamhet.

för att stänga fönstret, tryck Ctrl + B och tryck sedan snabbt på X. statusfältet blir gult. Du uppmanas sedan att bekräfta att du vill döda fönstret.

annons

Tryck på Y för att stänga fönstret eller N om du ändrar dig. Du behöver inte trycka på Enter efteråt; Y eller N räcker för att registrera ditt val.

om du trycker på Y stängs fönstret. Eftersom detta är det enda fönstret i den här sessionen avslutas sessionen.

tmux sessionen är stängd och du återgår till kommandoraden från vilken du startadetmux. Du ser ”” i terminalfönstret.

det här kan verka som om det är uppenbart, men det är en bekräftelse på att du har stängt sessionen och inte lämnat den fristående och löpande. Vi diskuterar att ta bort sessioner nedan.

starta en namngiven tmux-Session

om du regelbundet startar fleratmux sessioner, kommer du snabbt att uppskatta funktionaliteten att ge var och en av dem ett meningsfullt namn. Du kan namnge sessioner i screen, men de visas inte någonstans i sessionsfönstren.

annons

för att startatmux med ett sessionsnamn, använd kommandotnew (ny session) och alternativet-s (sessionsnamn). Vår session kommer att kallas ”geek-1”, Så vi skriver följande:

tmux new -s geek-1

När tmux session laddas, visas” geek-1 ” som den första posten i statusfältet längst till vänster.

lägga till fler fönster

om du vill skapa ett nytt fönster i den aktuella sessionen trycker du på Ctrl+B och sedan på C. Du får ett tomt terminalfönster i den aktuella sessionen. Så vi har något som körs i det här nya fönstret, låt oss starta kommandot dmesg med -w (följ) alternativet:

dmesg -w
annons

nu har vi två fönster i sessionen; en kör top och den andra dmesg. Vi kan bara se en i taget (mer om det i ett ögonblick).

ta en titt på vänster sida av statusfältet. Vi är fortfarande i” geek-1″tmux session. I window zero körs top, och i window one körs dmesg. Asterisken ( * ) efter dmesg berättar vilket fönster som är synligt.

för att hoppa mellan fönster trycker du på Ctrl + B och sedan på en av följande tangenter:

  • N: Visa nästa fönster.
  • P: Visa föregående fönster.
  • 0 till 9: visa ett fönster numrerat 0 till 9.

Du kan också välja ett fönster från en lista. Om du trycker på Ctrl + B och sedan W visas en lista med fönster.

annons

för att flytta den gula markeringsfältet, tryck på upp-eller nedpilarna, hem eller slut. Den nedre delen av skärmen visar en förhandsgranskning av innehållet i det markerade fönstret.

Tryck på Enter för att flytta till det markerade fönstret, eller Esc för att lämna fönsterlistan utan att byta.

ta bort och bifoga sessioner

om du trycker på Ctrl + B och sedan D, kommer du att ta bort sessionen. Det fortsätter att köras i bakgrunden, men du kommer inte att kunna se eller interagera med det.

Vi har startat top I sessionen så vi har en löpande process att demonstrera med. Sedan trycker vi på Ctrl + B och sedan D. sessionen försvinner och blir en bakgrundssession.

annons

vi återgår till det ursprungliga terminalfönstret. Det finns ett meddelande från tmux som berättar att sessionen är fristående. Det påminner oss också om namnet Vi gav till sessionen. Det här är praktiskt eftersom det är vad vi använder för att bifoga en bakgrundssession och sedan återställa den till en interaktiv.

för att bifoga en fristående session använder vi självförklarandeattach-session kommando med-t (target session) alternativ. Vi kommer också att ange namnet på den session vi vill återkalla.

vi skriver följande:

tmux attach-session -t geek-1

vår session återgår och blir en synlig, interaktiv session igen.

alla långvariga eller kontinuerliga processer som du startade innan du tog bort sessionen körs fortfarande i bakgrunden (om de inte är färdiga) när du bifogar sessionen.

screen kan göra detta, men inte lika intuitivt.

hantering av flera sessioner

låt oss öppna ett annat terminalfönster och starta en ny tmux session som heter ”geek-2”:

tmux new -s geek-2

i den sessionen börjar vi dmesg:

dmesg -w
annons

nu har vi vår ursprungliga ”Geek-1” tmux session och en ny som heter ”Geek-2.”

statusfältet visar oss den här sessionen kallas ”geek-2”, och den har ett fönster som kör dmesg.

om vi trycker på Ctrl + B och sedan D, kopplar vi bort den sessionen.

annons

tillbaka i ”geek-1”tmux session trycker vi på Ctrl+B och sedan S för att se en lista med tmux sessioner.

för att vara tydlig är det här en lista över sessioner. Den liknande skärmen vi såg tidigare var en lista över fönster i en enda session.

Du kan flytta den gula markeringsfältet genom att trycka på upp-och nedpilarna, hem och slut. Den nedre delen visar en förhandsgranskning av innehållet i den markerade sessionen.

om du trycker på högerpilen visas fönstren för den markerade sessionen.

annons

Tryck på Enter för att flytta till den markerade sessionen eller fönstret eller Esc för att lämna sessionslistan utan att ändra sessioner. Om du väljer en ny session lossnar din nuvarande och den du valt är bifogad.

vi lossade” geek-2 ” – sessionen innan vi gjorde det här. Du kan dock göra detta med sessioner som fortfarande är kopplade till deras ursprungliga terminalfönster. När du gör det visas alla skärmändringar samtidigt i bådatmux sessioner.

kommandotscreen kan också göra detta via en liknande uppsättning kommandon.

arbeta med fönsterrutor

om du trycker på Ctrl + B och sedan dubbla citattecken ( ”” ) delar du fönstret horisontellt i två rutor.

annons

detta påverkar bara det aktuella fönstret; de andra i sessionen ändras inte. Vi har använt kommandot tmux ls I den övre rutan för att lista fönstren i den här sessionen. Det finns två, och statusraden säger att vi är i fönster ett. Om vi hoppar över till window zero genom att trycka på Ctrl + B och sedan 0 (noll) ser vi att det är precis som vi lämnade det.

dessa är två oberoende kommandorader, inte två vyer i ett fönster; de är distinkta och separata skal. Vi kan visa detta genom att köra ett annat kommando i varje ruta.

vi skriver följande:

uname -a

ls -hl

för att flytta från en ruta till en annan, tryck Ctrl+B och sedan antingen Upp, Ner, Vänster eller Högerpil.

om du trycker på Ctrl + B och sedan procenttecknet (%) delar den aktuella rutan vertikalt.

annons

Tryck på Ctrl + B och sedan Q för att göra tmux blinkar kort numret på varje ruta.

dessa siffror används i prompter och meddelanden från tmux. Tryck på Ctrl + B och sedan X för att stänga den aktuella rutan. Statusfältet ändras till gult och du uppmanas att bekräfta att du vill stänga det rutnumret. Tryck på Y för att ta bort rutan eller N för att lämna saker som de är.

om du trycker på Y tas rutan bort.

kommandotscreen har också rutor, men igen är de mindre intuitiva att använda. Det som irriterar oss om screen är om du kopplar bort en session med rutor, försvinner de när du sätter tillbaka den sessionen. Detta blir gammalt väldigt snabbt.

ett Ctrl + B-fuskark

Vi har inkluderat ett fuskark med de olika kommandona du kan använda i tmux nedan.

Sessionskommandon

  • S: lista sessioner.
  • $: Byt namn på aktuell session.
  • D: Lossa aktuell session.
  • Ctrl+B, och sedan ?: Visa hjälpsidan i tmux.

Fönsterkommandon

  • C: skapa ett nytt fönster.
  • ,: Byt namn på det aktuella fönstret.
  • W: lista fönstren.
  • N: gå till nästa fönster.
  • P: flytta till föregående fönster.
  • 0 till 9: flytta till det angivna fönsternumret.

Panelkommandon

  • %: skapa en horisontell delning.
  • ”: skapa en vertikal delning.
  • h eller vänsterpil: flytta till rutan till vänster.
  • I eller Högerpil: Flytta till rutan till höger.
  • J eller nedåtpil: flytta till rutan nedan.
  • K eller uppåtpil: flytta till rutan ovan.
  • Q: Visa kort rutnummer.
  • O: flytta genom rutor i ordning. Varje tryck tar dig till nästa, tills du slingrar igenom dem alla.
  • }: byt positionen för den aktuella rutan med nästa.
  • {: byt positionen för den aktuella rutan med föregående.
  • X: stäng den aktuella rutan.

hur de jämför

När det gäller funktionalitet, screen och tmux båda utför på samma sätt och erbjuder samma huvudfunktioner. Det är hur du får tillgång till de funktionerna som är markant annorlunda. tmux erbjuder slicker, bekvämare sätt att komma till de olika funktionerna. Men det är inte den enda skillnaden.

annons

möjligheten att byta namn på sessioner och fönster i tmux är snyggt, och det faktum att det behåller rutorna när du sätter tillbaka en session är en spelväxlare.

screen, å andra sidan, förlorar helt rutor när du kopplar bort och sätter tillbaka en session. Detta är nästan irriterande nog för att du ska undvika att lossna i första hand.

det finns så mycket mer att tmux, inklusive dess otroligt flexibla skriptfunktioner. Du är skyldig dig själv att kolla in det.

Dave McKay
Dave McKay använde först datorer när stansade pappersband var på modet, och han har programmerat sedan dess. Efter över 30 år i IT-branschen är han nu en heltidsteknikjournalist. Under sin karriär har han arbetat som frilansprogrammerare, chef för ett internationellt mjukvaruutvecklingsteam, projektledare för IT-tjänster och senast som dataskyddsombud. Dave är en Linux evangelist och öppen källkod förespråkare.Läs hela Bio ”