Jak používat tmux na Linuxu (a proč je lepší než obrazovka)

Linuxový příkaz tmux je terminálový multiplexer, jako je obrazovka. Jeho zastánci jsou mnozí a hlasití, a tak jsme se rozhodli oba porovnat. Je tmux opravdu lepší, nebo je to jen případ preferování toho, co znáte?

tmux vs. obrazovka

Příkazy obrazovky tmux i GNU jsou terminálové multiplexery. Umožňují vám mít více oken v jednom okně terminálu a přeskakovat mezi nimi tam a zpět. Okno lze rozdělit na panely, z nichž každý poskytuje nezávislý příkazový řádek.

Můžete také odpojit relaci a stane se z ní bezhlavá entita běžící na pozadí – můžete dokonce zavřít okno terminálu, které ji spustilo. Až budete připraveni, můžete otevřít nové okno terminálu a znovu připojit stále běžící relaci. Můžete to provést také přes připojení SSH.

Můžete odpojit relaci na jednom počítači, vrátit se domů a přihlásit se ke vzdálenému počítači. Po opětovném připojení můžete relaci na pozadí znovu připojit a znovu ji interaktivně používat.

Co je to příkaz obrazovky?

Příkaz screen je také terminálový multiplexer a je nabitý možnostmi. Pokud chcete vědět, co všechno s tím můžete dělat, podívejte se na náš podrobný článek.

Tentokrát jdeme na to soustředit se na tmux. Postupem času se zmíníme o tom, jak obrazovka zachází se stejnou funkcí nebo funkcí.

Na obrazovce nás štvala pouze jedna věc. Probereme to, až se k tomu dostaneme, a uvidíme, jestli si tmux vede lépe.

Instalace tmux

Zatímco obrazovka je obecně nainstalována ve výchozím nastavení v populárních distribucích Linuxu, tmux není. Chcete-li nainstalovat tmux na Ubuntu, zadejte následující:

sudo apt-get install tmux

Na Manjaro můžete použít pacman:

sudo pacman -Sy tmux

Na Fedoře 31 je tmux již nainstalován.

  Doporučení pro dobře odvedenou práci

Spuštění relace tmux

Chcete-li spustit tmux, stačí jej napsat a stisknout Enter:

tmux

V okně terminálu se zobrazí stavový řádek, když jste v relaci tmux.

Pravá strana stavového řádku zobrazuje název hostitele a čas a datum. Na levé straně jsou zobrazeny následující informace týkající se relace:

[0]: Toto je název relace. Ve výchozím nastavení jsou očíslovány, počínaje nulou. Níže se zabýváme tím, jak můžete relacím přiřadit smysluplné názvy.
0:bash*: 0 znamená, že toto je první okno v této relaci. Jediný proces běžící v této relaci je bash. Pokud spustíte program, objeví se zde jeho název. Hvězdička

znamená, že toto je okno, na které se díváte. Pokaždé, když v relaci tmux vytvoříte nové okno, do stavového řádku se přidá jeho číslo okna a název programu, který v něm běží.

Příkaz obrazovky nezobrazuje stavový řádek. Musíte létat naslepo a spoléhat se na svůj důvtip, abyste věděli, co se děje, což chce trochu cviku.

Pozitivní je, že nepřijdete o řadu nemovitostí v terminálovém okně. Samozřejmě byste normálně rozšířili okno svého terminálu, aby se použití terminálového multiplexeru vyplatilo. V takovém případě není ztráta jednoho řádku pro stavový řádek velkým problémem. Ponechali jsme zde obrázky oken terminálu ve výchozí velikosti, abyste viděli informace.

Příkazy jsou do tmuxu zadávány pomocí úhozů kláves a má to dvě části. Nejprve stiskněte Ctrl+B, abyste upoutali pozornost tmuxu. Poté rychle stiskněte další klávesu pro odeslání příkazu totmux. Příkazy se zadávají stisknutím písmen, číslic, interpunkčních znamének nebo kláves se šipkami.

Na obrazovce je to stejné, až na to, že stisknete Ctrl+A, abyste upoutali jeho pozornost.

Chcete-li okno zavřít, stiskněte Ctrl+B a poté rychle stiskněte X. Stavový řádek se změní na oranžovou. Poté budete vyzváni k potvrzení, že chcete okno zabít.

Stiskněte Y pro zavření okna nebo N, pokud si to rozmyslíte. Nemusíte poté stisknout Enter; K registraci vaší volby stačí Y nebo N.

Pokud stisknete Y, okno se zavře. Protože se jedná o jediné okno v této relaci, relace je ukončena.[exited]Relace tmux se uzavře a vrátíte se na příkazový řádek, ze kterého jste spustili tmux. Uvidíte „

“ v okně terminálu.

Mohlo by se zdát, že je to jasné, ale je to potvrzení, že jste relaci uzavřeli a nenechali ji odpojenou a spuštěnou. O oddělených relacích budeme diskutovat níže.

Spuštění pojmenované relace tmux

Pokud pravidelně spouštíte více relací tmux, rychle oceníte funkci, kdy každé z nich dáte smysluplný název. Relace můžete pojmenovat také na obrazovce, ale nikde v oknech relací se nezobrazují.

tmux new -s geek-1

Chcete-li spustit tmux s názvem relace, použijte příkaz new (new session) a volbu -s (název relace). Naše relace se bude jmenovat „geek-1“, takže zadáme následující:

Když se relace tmux načte, na stavovém řádku zcela vlevo se jako první položka zobrazí „geek-1“.

Relace tmux s názvem

Přidání dalších Windows Chcete-li vytvořit nové okno v aktuální relaci, stiskněte Ctrl+B a poté C. V aktuální relaci získáte prázdné okno terminálu. Takže v tomto novém okně budeme mít něco spuštěného, ​​začněme příkaz dmesg

dmesg -w

s volbou -w (následovat):

  Jak získat režim přehledu „jako Gnome“ v KDE Plasma s qOverview

Nyní máme v relaci dvě okna; jeden běží nahoře a druhý dmesg. V jednu chvíli však můžeme vidět pouze jednu (více o tom za chvíli).

Podívejte se na levou stranu stavového řádku. Stále jsme v tmux relaci „geek-1“. V okně nula běží top a v prvním okně běží dmesg. Hvězdička

poté, co nám dmesg řekne, které okno je viditelné.
Chcete-li přeskakovat mezi okny, stiskněte Ctrl+B a poté jednu z následujících kláves:
N: Zobrazí další okno.

P: Zobrazí předchozí okno.

0 až 9: Zobrazí okno s číslem 0 až 9.

Můžete také vybrat okno ze seznamu. Pokud stisknete Ctrl+B a poté W, zobrazí se seznam oken.

Chcete-li přesunout oranžový zvýrazněný pruh, stiskněte šipku nahoru nebo dolů, Home nebo End. Spodní část displeje zobrazuje náhled obsahu ve zvýrazněném okně.

Stiskněte Enter pro přesun do zvýrazněného okna nebo Esc pro opuštění seznamu oken bez přepínání.

Odpojování a připojování relací

Pokud stisknete Ctrl+B a poté D, relaci odpojíte. Bude nadále běžet na pozadí, ale nebudete jej moci vidět ani s ním pracovat.

V relaci jsme začali jako první, takže máme běžící proces, který můžeme demonstrovat. Poté stiskneme Ctrl+B a poté D. Relace zmizí a stane se relací na pozadí.

Vrátíme se do původního okna terminálu. Existuje zpráva od tmux, která nám říká, že relace je odpojena. Připomíná nám to také název, který jsme dali relaci. To je užitečné, protože to je to, co používáme k připojení k relaci na pozadí a poté ji obnovíme na interaktivní.

tmux attach-session -t geek-1

K připojení oddělené relace použijeme samovysvětlující příkaz connect-session s volbou -t (cílová relace). Poskytneme také název relace, kterou si přejeme vyvolat.

Zadáme následující:

Naše relace se vrací a stává se opět viditelnou, interaktivní relací.

Jakékoli dlouho běžící nebo nepřetržité procesy, které jste spustili před odpojením relace, budou po připojení relace stále běžet na pozadí (pokud nebyly dokončeny).

obrazovka to umí, ale ne tak intuitivně.

tmux new -s geek-2

Zpracování více relací

dmesg -w

Otevřeme další okno terminálu a spustíme novou relaci tmux nazvanou „geek-2“:

V této relaci spustíme dmesg:

Nyní máme naši původní tmux relaci „geek-1“ a novou s názvem „geek-2“.

Stavový řádek nám ukazuje, že tato relace se nazývá „geek-2“ a má jedno okno, ve kterém běží dmesg.

Pokud stiskneme Ctrl+B a poté D, relaci odpojíme.

Zpět v relaci tmux „geek-1“ stiskneme Ctrl+B a poté S, abychom viděli seznam relací tmux.

Aby bylo jasno, toto je seznam relací. Podobný displej, který jsme viděli dříve, byl seznam oken v jedné relaci.

Žlutou zvýrazněnou lištu můžete přesunout stisknutím šipek nahoru a dolů, Home a End. Spodní část zobrazuje náhled obsahu ve zvýrazněné relaci.

  Jak povolit okamžité aplikace na Androidu

Pokud stisknete šipku vpravo, zobrazí se okna pro zvýrazněnou relaci.

Stisknutím klávesy Enter se přesunete do zvýrazněné relace nebo okna nebo stisknutím klávesy Esc opustíte seznam relací beze změny relací. Pokud vyberete novou relaci, vaše aktuální se odpojí a ta, kterou jste vybrali, se připojí.

Než jsme to udělali, odpojili jsme sezení „geek-2“. Můžete to však udělat s relacemi, které jsou stále připojeny k jejich původním oknům terminálu. Když tak učiníte, jakékoli změny obrazovky se objeví současně v obou relacích tmux.

Pomocí podobné sady příkazů to dokáže i příkaz screen.

Práce s okenními tabulemi

Pokud stisknete Ctrl+B a poté dvojité uvozovky (“”), rozdělíte okno vodorovně na dva panely.

To ovlivní pouze aktuální okno; ostatní v relaci se nezmění. K zobrazení seznamu oken v této relaci jsme použili příkaz tmux ls v horním panelu. Jsou dva a stavový řádek nám říká, že jsme v prvním okně. Pokud přeskočíme na okno nula stisknutím Ctrl+B a poté 0 (nula), vidíme, že je přesně tak, jak jsme jej opustili.

Toto jsou dva nezávislé příkazové řádky, nikoli dva pohledy v jednom okně; jsou to odlišné a samostatné skořápky. Můžeme to ukázat spuštěním jiného příkazu v každém panelu.

Zadáme následující:

uname -a

ls -hl

Chcete-li se přesunout z jednoho panelu do druhého, stiskněte Ctrl+B a poté šipku nahoru, dolů, doleva nebo doprava.

Pokud stisknete Ctrl+B a poté znak procenta (%), rozdělí aktuální panel svisle.

Stiskněte Ctrl+B a poté Q, aby tmux krátce zablikal číslo každého panelu.

Tato čísla se používají ve výzvách a zprávách z tmux. Stisknutím Ctrl+B a potom X zavřete aktuální podokno. Stavový řádek se změní na oranžovou a budete vyzváni k potvrzení, že chcete zavřít toto číslo podokna. Stiskněte Y pro odstranění podokna nebo N pro ponechání věcí tak, jak jsou.

Pokud stisknete Y, panel se odstraní.

Příkaz screen má také podokna, ale jejich použití je opět méně intuitivní. Věc, která nás na obrazovce štve, je, že pokud odpojíte relaci s panely, zmizí, když tuto relaci znovu připojíte. Tohle stárne velmi rychle.

A Ctrl+B Cheat Sheet

Níže jsme zahrnuli cheaty s různými příkazy, které můžete použít v tmux.
Příkazy relace
S: Seznam relací.
$: Přejmenovat aktuální relaci.

D: Odpojit aktuální relaci.

Ctrl+B a poté ?: Zobrazení stránky nápovědy v tmux.
Příkazy okna
C: Vytvořte nové okno.
,: Přejmenovat aktuální okno.
W: Seznam oken.
N: Přejít do dalšího okna.

P: Přesun do předchozího okna.

0 až 9: Přesun na zadané číslo okna.
Příkazy podokna
%: Vytvořte vodorovné rozdělení.
“: Vytvořte vertikální rozdělení.
H nebo šipka doleva: Přesuňte se do podokna vlevo.
I nebo šipka vpravo: Přesuňte se do podokna vpravo.
J nebo šipka dolů: Přesuňte se do podokna níže.
K nebo Šipka nahoru: Přesuňte se do podokna výše.
Otázka: Krátce ukažte čísla podoken.
O: Procházejte panely v pořadí. Každým stisknutím se dostanete na další, dokud neprojdete všechny.
}: Vymění pozici aktuálního podokna za následující.

{: Vymění pozici aktuálního panelu za předchozí.

X: Zavře aktuální panel.

Jak se porovnávají

Pokud jde o funkčnost, obrazovka a tmux fungují podobně a nabízejí stejné hlavní funkce. Je to způsob přístupu k těmto funkcím, který je výrazně odlišný. tmux nabízí úhlednější a pohodlnější způsoby, jak se dostat k různým funkcím. To však není jediný rozdíl.

Schopnost přejmenovat relace a okna v tmux je úhledná a skutečnost, že zachová podokna, když znovu připojíte relaci, mění hru.

na druhé straně obrazovka zcela ztratí podokna, když relaci odpojíte a znovu připojíte. To je téměř dost nepříjemné, abyste se v první řadě vyhnuli oddělení.

Tmux toho nabízí mnohem víc, včetně jeho neuvěřitelně flexibilních možností skriptování. Dlužíš si to zkontrolovat.