So verwenden Sie tmux unter Linux (und warum es besser ist als der Bildschirm)

Der Linux-Befehl tmux ist ein Terminal-Multiplexer, ähnlich wie screen. Es gibt viele und lautstarke Befürworter, also haben wir uns entschieden, die beiden zu vergleichen. Ist tmux wirklich besser oder geht es nur darum, das zu bevorzugen, was man kennt?

tmux vs. Bildschirm

Sowohl die tmux- als auch die GNU-Bildschirmbefehle sind Terminal-Multiplexer. Sie ermöglichen es Ihnen, mehrere Fenster in einem einzigen Terminalfenster zu haben und zwischen ihnen hin und her zu springen. Ein Fenster kann in Bereiche unterteilt werden, von denen jeder eine unabhängige Befehlszeile bietet.

Sie können eine Sitzung auch trennen und sie wird zu einer kopflosen Entität, die im Hintergrund ausgeführt wird – Sie können sogar das Terminalfenster schließen, das sie gestartet hat. Wenn Sie fertig sind, können Sie ein neues Terminalfenster öffnen und die noch laufende Sitzung erneut anhängen. Sie können dies auch über eine SSH-Verbindung tun.

Sie können eine Sitzung auf einem Computer trennen, nach Hause gehen und sich beim Remote-Computer anmelden. Wenn die Verbindung wiederhergestellt ist, können Sie die Hintergrundsitzung erneut anhängen und wieder interaktiv verwenden.

Was ist der Bildschirmbefehl?

Der Befehl screen ist auch ein Terminal-Multiplexer und steckt voller Optionen. In unserem ausführlichen Artikel erfahren Sie, was Sie damit machen können.

Dieses Mal gehen wir konzentriere dich auf tmux. Im weiteren Verlauf werden wir erwähnen, wie der Bildschirm mit derselben Funktion oder Funktion umgeht.

Nur eine Sache hat uns am Bildschirm genervt. Wir werden das behandeln, wenn wir dazu kommen, und sehen, ob tmux besser abschneidet.

tmux installieren

Während screen im Allgemeinen standardmäßig auf gängigen Linux-Distributionen installiert ist, ist tmux dies nicht. Geben Sie Folgendes ein, um tmux unter Ubuntu zu installieren:

sudo apt-get install tmux

Auf Manjaro können Sie Pacman verwenden:

sudo pacman -Sy tmux

Auf Fedora 31 ist tmux bereits installiert.

Starten einer tmux-Sitzung

Um tmux zu starten, geben Sie es einfach ein und drücken Sie die Eingabetaste:

tmux

Das Terminalfenster zeigt eine Statusleiste an, wenn Sie sich in einer tmux-Sitzung befinden.

Auf der rechten Seite der Statusleiste werden der Hostname sowie die Uhrzeit und das Datum angezeigt. Auf der linken Seite werden die folgenden sitzungsbezogenen Informationen angezeigt:

[0]: Dies ist der Sitzungsname. Standardmäßig sind sie nummeriert, beginnend mit Null. Im Folgenden erfahren Sie, wie Sie Sitzungen sinnvolle Namen geben können.
0:bash*: Die 0 zeigt an, dass dies das erste Fenster in dieser Sitzung ist. Der einzige Prozess, der in dieser Sitzung ausgeführt wird, ist die Bash. Wenn Sie ein Programm ausführen, wird sein Name hier angezeigt. Das Sternchen

bedeutet, dass dies das Fenster ist, das Sie betrachten. Jedes Mal, wenn Sie in einer tmux-Sitzung ein neues Fenster erstellen, werden dessen Fensternummer und der Name des darin ausgeführten Programms zur Statusleiste hinzugefügt.

Der Bildschirmbefehl gibt Ihnen keine Statusleiste. Sie müssen blind fliegen und sich auf Ihren Verstand verlassen, um zu wissen, was vor sich geht, was ein wenig Übung erfordert.

Auf der positiven Seite verlieren Sie keine Zeile an Terminalfenster-Immobilien. Natürlich würden Sie normalerweise Ihr Terminalfenster erweitern, damit sich die Verwendung eines Terminal-Multiplexers lohnt. In diesem Fall ist der Verlust einer Zeile für die Statusleiste kein großes Problem. Wir haben die Bilder der Terminalfenster hier in der Standardgröße belassen, damit Sie die Informationen sehen können.

Befehle werden an tmux über Tastenanschläge gegeben, und dies besteht aus zwei Teilen. Zuerst drücken Sie Strg+B, um die Aufmerksamkeit von tmux zu erregen. Sie drücken dann schnell die nächste Taste, um einen Befehl an totmux zu senden. Befehle werden durch Drücken von Buchstaben, Zahlen, Satzzeichen oder Pfeiltasten gegeben.

Es ist das gleiche auf dem Bildschirm, außer dass Sie Strg+A drücken, um seine Aufmerksamkeit zu erregen.

Um das Fenster zu schließen, drücken Sie Strg+B und drücken Sie dann schnell X. Die Statusleiste wird gelb. Sie werden dann aufgefordert, zu bestätigen, dass Sie das Fenster schließen möchten.

Drücken Sie Y, um das Fenster zu schließen, oder N, wenn Sie Ihre Meinung ändern. Sie müssen danach nicht die Eingabetaste drücken; J oder N reicht aus, um Ihre Wahl zu registrieren.

Wenn Sie Y drücken, wird das Fenster geschlossen. Da dies das einzige Fenster in dieser Sitzung ist, wird die Sitzung beendet.[exited]Die tmux-Sitzung wird geschlossen und Sie kehren zu der Befehlszeile zurück, von der aus Sie tmux gestartet haben. Du wirst sehen „

“ im Terminalfenster.

Dies mag so aussehen, als würde es das Offensichtliche sagen, aber es ist eine Bestätigung, dass Sie die Sitzung geschlossen und nicht getrennt und ausgeführt haben. Wir werden das Trennen von Sitzungen weiter unten besprechen.

Starten einer benannten tmux-Sitzung

Wenn Sie regelmäßig mehrere tmux-Sitzungen starten, werden Sie schnell die Funktionalität zu schätzen wissen, jeder von ihnen einen aussagekräftigen Namen zu geben. Sie können Sitzungen auch im Bildschirm benennen, sie werden jedoch nirgendwo in den Sitzungsfenstern angezeigt.

tmux new -s geek-1

Um tmux mit einem Sitzungsnamen zu starten, verwenden Sie den Befehl new (neue Sitzung) und die Option -s (Sitzungsname). Unsere Sitzung wird „geek-1“ heißen, also geben wir Folgendes ein:

Wenn die tmux-Sitzung geladen wird, wird „geek-1“ als erster Eintrag in der Statusleiste ganz links angezeigt.

Eine tmux-Sitzung mit dem Namen

Hinzufügen weiterer Fenster Um ein neues Fenster in der aktuellen Sitzung zu erstellen, drücken Sie Strg+B und dann C. Sie erhalten ein leeres Terminalfenster in der aktuellen Sitzung. In diesem neuen Fenster läuft also etwas, lasst uns das starten dmesg-Befehl

dmesg -w

mit der Option -w (folgen):

Jetzt haben wir zwei Fenster in der Sitzung; einer läuft top und der andere dmesg. Wir können jedoch jeweils nur einen sehen (mehr dazu gleich).

Sehen Sie sich die linke Seite der Statusleiste an. Wir befinden uns immer noch in der tmux-Sitzung „Geek-1“. In Fenster null läuft top und in Fenster eins läuft dmesg. Das Sternchen

nachdem dmesg uns sagt, welches Fenster sichtbar ist.
Um zwischen Fenstern zu wechseln, drücken Sie Strg+B und dann eine der folgenden Tasten:
N: Zeigt das nächste Fenster an.

P: Zeigt das vorherige Fenster an.

0 bis 9: Zeigt ein Fenster mit den Nummern 0 bis 9 an.

Sie können auch ein Fenster aus einer Liste auswählen. Wenn Sie Strg+B und dann W drücken, wird eine Liste mit Fenstern angezeigt.

Um die gelbe Markierungsleiste zu verschieben, drücken Sie die Aufwärts- oder Abwärtspfeiltaste, Pos1 oder Ende. Der untere Bereich des Displays zeigt eine Vorschau des Inhalts im markierten Fenster.

Drücken Sie die Eingabetaste, um zum markierten Fenster zu wechseln, oder Esc, um die Fensterliste ohne Umschalten zu verlassen.

Trennen und Anhängen von Sitzungen

Wenn Sie Strg+B und dann D drücken, trennen Sie die Sitzung. Es wird weiterhin im Hintergrund ausgeführt, aber Sie können es nicht sehen oder damit interagieren.

Wir haben in der Sitzung ganz oben angefangen, also haben wir einen laufenden Prozess, mit dem wir demonstrieren können. Dann drücken wir Strg+B und dann D. Die Sitzung verschwindet und wird zu einer Hintergrundsitzung.

Wir kehren zum ursprünglichen Terminalfenster zurück. Es gibt eine Nachricht von tmux, die uns mitteilt, dass die Sitzung getrennt wurde. Es erinnert uns auch an den Namen, den wir der Sitzung gegeben haben. Dies ist praktisch, da wir damit eine Hintergrundsitzung anhängen und sie dann in einer interaktiven Sitzung wiederherstellen.

tmux attach-session -t geek-1

Um eine getrennte Sitzung anzuhängen, verwenden wir den selbsterklärenden Befehl attach-session mit der Option -t (Zielsitzung). Wir geben auch den Namen der Sitzung an, die wir abrufen möchten.

Wir geben folgendes ein:

Unsere Sitzung kehrt zurück und wird wieder zu einer sichtbaren, interaktiven Sitzung.

Alle lang andauernden oder kontinuierlichen Prozesse, die Sie vor dem Trennen der Sitzung gestartet haben, werden weiterhin im Hintergrund ausgeführt (sofern sie nicht abgeschlossen sind), wenn Sie die Sitzung anhängen.

screen kann dies tun, aber nicht so intuitiv.

tmux new -s geek-2

Umgang mit mehreren Sitzungen

dmesg -w

Lassen Sie uns ein weiteres Terminalfenster öffnen und eine neue tmux-Sitzung namens „geek-2“ starten:

In dieser Sitzung starten wir dmesg:

Jetzt haben wir unsere ursprüngliche „geek-1“-tmux-Sitzung und eine neue namens „geek-2“.

Die Statusleiste zeigt uns, dass diese Sitzung „geek-2“ heißt und ein Fenster hat, in dem dmesg ausgeführt wird.

Wenn wir Strg+B und dann D drücken, trennen wir diese Sitzung.

Zurück in der tmux-Sitzung „geek-1“ drücken wir Strg+B und dann S, um eine Liste der tmux-Sitzungen anzuzeigen.

Um es klar zu sagen, dies ist eine Liste von Sitzungen. Die ähnliche Anzeige, die wir zuvor gesehen haben, war eine Liste von Fenstern in einer einzelnen Sitzung.

Sie können die gelbe Markierungsleiste verschieben, indem Sie die Aufwärts- und Abwärtspfeile, Pos1 und Ende drücken. Der untere Abschnitt zeigt eine Vorschau des Inhalts in der markierten Sitzung an.

Wenn Sie den Rechtspfeil drücken, werden die Fenster für die markierte Sitzung angezeigt.

Drücken Sie die Eingabetaste, um zur markierten Sitzung oder zum markierten Fenster zu wechseln, oder Esc, um die Sitzungsliste zu verlassen, ohne die Sitzungen zu ändern. Wenn Sie eine neue Sitzung auswählen, wird Ihre aktuelle Sitzung getrennt und die von Ihnen ausgewählte wird angehängt.

Wir haben die „Geek-2“-Sitzung getrennt, bevor wir dies taten. Sie können dies jedoch mit Sitzungen tun, die noch an ihre ursprünglichen Terminalfenster angehängt sind. Wenn Sie dies tun, werden alle Bildschirmänderungen gleichzeitig in beiden tmux-Sitzungen angezeigt.

Auch der screen-Befehl kann dies über einen ähnlichen Befehlssatz tun.

Arbeiten mit Fensterbereichen

Wenn Sie Strg+B und dann doppelte Anführungszeichen („“) drücken, teilen Sie das Fenster horizontal in zwei Bereiche.

Dies betrifft nur das aktuelle Fenster; die anderen in der Sitzung werden nicht geändert. Wir haben den Befehl tmux ls im oberen Bereich verwendet, um die Fenster in dieser Sitzung aufzulisten. Es gibt zwei, und die Statuszeile sagt uns, dass wir uns im ersten Fenster befinden. Wenn wir zu Fenster Null springen, indem wir Strg+B und dann 0 (Null) drücken, sehen wir, dass es genauso ist, wie wir es verlassen haben.

Dies sind zwei unabhängige Befehlszeilen, nicht zwei Ansichten in einem Fenster; sie sind verschiedene und separate Schalen. Wir können dies anzeigen, indem wir in jedem Bereich einen anderen Befehl ausführen.

Wir geben folgendes ein:

uname -a

ls -hl

Um von einem Bereich in einen anderen zu wechseln, drücken Sie STRG+B und dann entweder den Aufwärts-, Abwärts-, Links- oder Rechtspfeil.

Wenn Sie Strg+B und dann das Prozentzeichen (%) drücken, wird das aktuelle Fenster vertikal geteilt.

Drücken Sie Strg+B und dann Q, damit tmux die Nummer jedes Fensters kurz blinken lässt.

Diese Nummern werden in Eingabeaufforderungen und Nachrichten von tmux verwendet. Drücken Sie Strg+B und dann X, um den aktuellen Bereich zu schließen. Die Statusleiste ändert sich in Gelb und Sie werden aufgefordert zu bestätigen, dass Sie diese Fensternummer schließen möchten. Drücken Sie Y, um das Fenster zu entfernen, oder N, um alles so zu belassen, wie es ist.

Wenn Sie Y drücken, wird der Bereich entfernt.

Der Bildschirmbefehl verfügt auch über Bereiche, die jedoch wiederum weniger intuitiv zu verwenden sind. Was uns am Bildschirm nervt, ist, dass wenn Sie eine Sitzung mit Fenstern trennen, diese verschwinden, wenn Sie diese Sitzung erneut anhängen. Das wird sehr schnell alt.

Ein Strg+B-Spickzettel

Wir haben unten einen Spickzettel mit den verschiedenen Befehlen eingefügt, die Sie in tmux verwenden können.
Sitzungsbefehle
S: Sitzungen auflisten.
$: Aktuelle Sitzung umbenennen.

D: Aktuelle Sitzung trennen.

Strg+B und dann ?: Hilfeseite in tmux anzeigen.
Fensterbefehle
C: Erstellen Sie ein neues Fenster.
,: Benennt das aktuelle Fenster um.
W: Listen Sie die Fenster auf.
N: Zum nächsten Fenster wechseln.

P: Zum vorherigen Fenster wechseln.

0 bis 9: Zur angegebenen Fensternummer wechseln.
Bereichsbefehle
%: Erstellen Sie eine horizontale Teilung.
“: Erstellen Sie eine vertikale Teilung.
H oder Pfeil nach links: Zum linken Bereich wechseln.
I oder Rechtspfeil: Zum Fenster rechts wechseln.
J oder Abwärtspfeil: Wechseln Sie in das Fenster darunter.
K oder Aufwärtspfeil: Zum oberen Bereich wechseln.
F: Zeigen Sie kurz die Fensternummern an.
O: Gehen Sie der Reihe nach durch die Fenster. Mit jedem Drücken gelangen Sie zum nächsten, bis Sie alle durchlaufen.
}: Vertauscht die Position des aktuellen Fensters mit dem nächsten.

{: Vertauscht die Position des aktuellen Fensters mit dem vorherigen.

X: Schließen Sie das aktuelle Fenster.

Wie sie vergleichen

In Bezug auf die Funktionalität funktionieren screen und tmux beide ähnlich und bieten die gleichen Hauptfunktionen. Es ist die Art und Weise, wie Sie auf diese Funktionen zugreifen, die sich deutlich unterscheidet. tmux bietet übersichtlichere und komfortablere Möglichkeiten, um zu den verschiedenen Funktionen zu gelangen. Das ist jedoch nicht der einzige Unterschied.

Die Möglichkeit, Sitzungen und Fenster in tmux umzubenennen, ist nett, und die Tatsache, dass die Fenster beim erneuten Anhängen einer Sitzung erhalten bleiben, ist ein Wendepunkt.

Bildschirm hingegen verliert Fenster vollständig, wenn Sie eine Sitzung trennen und erneut anfügen. Dies ist fast schon nervig genug, um ein Ablösen von vornherein zu vermeiden.

tmux bietet so viel mehr, einschließlich seiner unglaublich flexiblen Skriptfunktionen. Sie sind es sich selbst schuldig, es zu überprüfen.