Ist der Linux-Befehl tmux wirklich besser als screen? Wir haben es versucht, um das herauszufinden.
Der Linux- tmux Befehl ist ein Terminal-Multiplexer, wie screen . Seine Befürworter sind zahlreich und lautstark, also haben wir uns entschieden, die beiden zu vergleichen. Ist er tmux wirklich besser oder ist es nur eine Frage der Vorliebe für das, was man kennt?
tmux vs. Bildschirm
Sowohl die tmux als auch die GNU- screenBefehle sind Terminal-Multiplexer . Sie ermöglichen es Ihnen, mehrere Fenster in einem einzigen Terminalfenster zu haben und zwischen ihnen hin- und herzuspringen. Ein Fenster kann in Bereiche unterteilt werden, von denen jeder Ihnen eine unabhängige Befehlszeile bietet.
Sie können eine Sitzung auch trennen, sodass sie zu einer im Hintergrund laufenden, kopflosen Einheit 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 verbinden. 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 Remotecomputer anmelden. Wenn die Verbindung wiederhergestellt ist, können Sie die Hintergrundsitzung erneut verbinden und sie wieder interaktiv verwenden.
Was ist der Bildschirmbefehl?
Der screenBefehl ist auch ein Terminal-Multiplexer und steckt voller Optionen. Um mehr darüber zu erfahren, was Sie damit alles machen können, lesen Sie unseren ausführlichen Artikel .
Dieses Mal konzentrieren wir uns auf tmux. Im weiteren Verlauf erwähnen wir, wie screendasselbe Feature oder dieselbe Funktion gehandhabt wird.
Nur eine Sache hat uns an gestört screen. Darauf gehen wir ein, wenn wir soweit sind, und schauen, ob tmuxes dann besser wird.
tmux installieren
Während screen in gängigen Linux-Distributionen standardmäßig installiert ist, ist dies bei tmux nicht der Fall. Um es tmuxunter Ubuntu zu installieren, geben Sie Folgendes ein:
Auf Manjaro können Sie Folgendes verwenden pacman:
Unter Fedora 31 tmuxist es bereits installiert.
Starten einer tmux-Sitzung
Geben Sie zum Starten tmuxeinfach den Text ein und drücken Sie die Eingabetaste:
Wenn Sie sich in einer Sitzung befinden, wird im Terminalfenster eine Statusleiste angezeigt tmux.
Auf der rechten Seite der Statusleiste werden der Hostname sowie Uhrzeit und Datum angezeigt. Auf der linken Seite werden die folgenden sitzungsbezogenen Informationen angezeigt:
- [0]: Dies ist der Sitzungsname. Standardmäßig sind sie nummeriert und beginnen mit Null. Wie Sie Sitzungen aussagekräftige Namen geben können, erfahren Sie weiter unten.
- 0:bash*: Die 0 gibt an, dass dies das erste Fenster in dieser Sitzung ist. Der einzige in dieser Sitzung ausgeführte Prozess ist bash. Wenn Sie ein Programm ausführen, wird sein Name hier angezeigt. Das Sternchen (*) bedeutet, dass dies das Fenster ist, das Sie gerade betrachten. Jedes Mal, wenn Sie in einer tmuxSitzung ein neues Fenster erstellen, werden dessen Fensternummer und der Name des darin ausgeführten Programms zur Statusleiste hinzugefügt.
Der screenBefehl gibt Ihnen standardmäßig keine Statusleiste. Sie müssen blind agieren und sich auf Ihren Verstand verlassen, um zu wissen, was vor sich geht, was ein wenig Übung erfordert. (Es sei denn, Sie konfigurieren Ihre eigene Statusleiste .)
Positiv ist, dass Sie keine Zeile Terminalfensterfläche verlieren. Normalerweise würden Sie Ihr Terminalfenster natürlich vergrößern, 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 durch tmuxTastenanschläge erteilt. Dabei handelt es sich um zwei Teile. Zuerst drücken Sie Strg+B, um tmuxdie Aufmerksamkeit von zu erregen. Dann drücken Sie schnell die nächste Taste, um einen Befehl an zu senden tmux. Befehle werden durch Drücken von Buchstaben, Zahlen, Satzzeichen oder Pfeiltasten erteilt.
Das Gleiche gilt für screen, 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 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 es sich anders überlegen. Sie müssen anschließend nicht die Eingabetaste drücken; Y oder N reichen 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.
Die tmuxSitzung wird geschlossen und Sie kehren zur Befehlszeile zurück, von der aus Sie gestartet haben tmux. Im Terminalfenster wird „[exited]“ angezeigt.
Das mag wie eine Selbstverständlichkeit erscheinen, aber es ist eine Bestätigung, dass Sie die Sitzung geschlossen und nicht getrennt und laufen gelassen haben. Das Trennen von Sitzungen wird weiter unten erläutert.
Starten einer benannten tmux-Sitzung
Wenn Sie regelmäßig mehrere Sitzungen starten tmux, werden Sie schnell die Funktion zu schätzen wissen, jeder Sitzung einen aussagekräftigen Namen zu geben. Sie können Sitzungen screenauch in benennen, sie werden jedoch nirgends in den Sitzungsfenstern angezeigt.
tmuxUm mit einem Sitzungsnamen zu beginnen , verwenden Sie den newBefehl (neue Sitzung) und die -sOption (Sitzungsname). Unsere Sitzung wird „geek-1“ heißen, also geben wir Folgendes ein:
Beim Laden der tmuxSitzung wird „geek-1“ als erster Eintrag ganz links in der Statusleiste angezeigt.
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. Damit wir in diesem neuen Fenster etwas ausführen können, starten wir den dmesgBefehl mit der -wOption (follow):
Jetzt haben wir zwei Fenster in der Sitzung; eines läuft topund das andere dmesg. Wir können jedoch immer nur eines gleichzeitig sehen (mehr dazu gleich).
Schauen Sie sich die linke Seite der Statusleiste an. Wir befinden uns immer noch in der tmuxSitzung „geek-1“. Im Fenster Null läuft top und im Fenster Eins dmesgläuft. Das Sternchen (*) dahinter dmesgsagt uns, 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: Vorheriges Fenster anzeigen.
- 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ärtspfeile, Home oder Ende. Im unteren Bereich des Displays wird eine Vorschau des Inhalts des markierten Fensters angezeigt.
Drücken Sie die Eingabetaste, um zum markierten Fenster zu gelangen, oder ESC, um die Fensterliste zu verlassen, ohne zu wechseln.
Trennen und Anfügen von Sitzungen
Wenn Sie Strg+B und dann D drücken, trennen Sie die Sitzung. Sie wird im Hintergrund weiter ausgeführt, Sie können sie jedoch nicht sehen oder mit ihr interagieren.
Wir haben topdie Sitzung gestartet, sodass wir einen laufenden Prozess zur Demonstration haben. 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 erscheint eine Meldung, die tmuxuns mitteilt, dass die Sitzung getrennt wurde. Außerdem werden wir an den Namen erinnert, den wir der Sitzung gegeben haben. Das ist praktisch, denn damit verbinden wir eine Hintergrundsitzung und wiederherstellen sie dann zu einer interaktiven Sitzung.
Um eine getrennte Sitzung anzuhängen, verwenden wir den selbsterklärenden attach-sessionBefehl mit der -tOption (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 zeitintensiven oder fortlaufenden Prozesse, die Sie vor dem Trennen der Sitzung gestartet haben, werden beim Anfügen der Sitzung weiterhin im Hintergrund ausgeführt (sofern sie nicht beendet sind).
screenkann dies tun, aber nicht so intuitiv.
Umgang mit mehreren Sitzungen
Öffnen wir ein weiteres Terminalfenster und starten eine neue tmuxSitzung namens „geek-2“:
In dieser Sitzung beginnen 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 laufendes Fenster hat dmesg.
Wenn wir Strg+B und dann D drücken, trennen wir die Sitzung.
Zurück in der tmuxSitzung „Geek-1“ drücken wir Strg+B und dann S, um eine Liste der tmuxSitzungen anzuzeigen.
Um es klarzustellen: 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 sowie die Home- und End-Taste drücken. Im unteren Bereich wird eine Vorschau des Inhalts der markierten Sitzung angezeigt.
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 die aktuelle Sitzung getrennt und die ausgewählte Sitzung angehängt.
Wir haben die Sitzung „geek-2“ getrennt, bevor wir dies getan haben. Sie können dies jedoch auch mit Sitzungen tun, die noch an ihre ursprünglichen Terminalfenster angehängt sind. Wenn Sie dies tun, werden alle Bildschirmänderungen gleichzeitig in beiden tmuxSitzungen angezeigt.
Der screenBefehl kann dies auch über einen ähnlichen Befehlssatz tun.
Arbeiten mit Fensterscheiben
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 tmux lsBefehl im oberen Bereich verwendet, um die Fenster in dieser Sitzung aufzulisten. Es gibt zwei, und die Statuszeile zeigt uns, dass wir uns in Fenster eins befinden. Wenn wir durch Drücken von Strg+B und dann 0 (Null) zu Fenster Null springen, sehen wir, dass es genauso ist, wie wir es verlassen haben.
Dies sind zwei unabhängige Befehlszeilen, nicht zwei Ansichten in einem Fenster; es sind unterschiedliche und separate Shells. Wir können dies zeigen, indem wir in jedem Bereich einen anderen Befehl ausführen.
Wir geben folgendes ein:
uname -als -hl Um von einem Bereich zum anderen zu wechseln, drücken Sie Strg+B und dann entweder die Pfeiltaste nach oben, unten, links oder rechts.
Wenn Sie Strg+B und dann das Prozentzeichen drücken, %)wird der aktuelle Bereich vertikal geteilt.
Drücken Sie Strg+B und dann Q, um tmuxdie Nummer jedes Bereichs kurz blinken zu lassen.
Diese Nummern werden in Eingabeaufforderungen und Nachrichten von verwendet tmux. Drücken Sie Strg+B und dann X, um den aktuellen Bereich zu schließen. Die Statusleiste wird gelb und Sie werden aufgefordert zu bestätigen, dass Sie diesen Bereich mit der Nummer schließen möchten. Drücken Sie Y, um den Bereich zu entfernen, oder N, um alles so zu belassen, wie es ist imax enhanced.
Wenn Sie Y drücken, wird der Bereich entfernt.
Der screenBefehl verfügt auch über Fenster, die jedoch weniger intuitiv zu verwenden sind. Was uns ärgert, screenist, dass Fenster verschwinden, wenn Sie eine Sitzung mit Fenstern trennen und diese erneut verbinden. Das wird schnell langweilig.
Ein Spickzettel mit der Tastenkombination Strg+B
Wir haben unten eine Spickzettel mit den verschiedenen Befehlen beigefügt, die Sie verwenden können tmux.
Sitzungsbefehle
- S: Sitzungen auflisten.
- $: Aktuelle Sitzung umbenennen.
- D: Aktuelle Sitzung trennen.
- Strg+B und dann ?: Hilfeseite in anzeigen tmux.
Fensterbefehle
- C: Neues Fenster erstellen.
- ,: Benennen Sie das aktuelle Fenster um.
- W: Liste 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 Bereich links wechseln.
- I oder Pfeil nach rechts: Zum Bereich rechts wechseln.
- J oder Pfeil nach unten: Zum Bereich darunter wechseln.
- K oder Pfeil nach oben: Zum oberen Bereich wechseln.
- F : Fensternummern kurz anzeigen.
- O: Bewegen Sie sich der Reihe nach durch die Fenster. Mit jedem Drücken gelangen Sie zum nächsten, bis Sie alle Fenster durchlaufen haben.
- }: Die Position des aktuellen Bereichs mit der des nächsten vertauschen.
- {: Die Position des aktuellen Bereichs mit der des vorherigen vertauschen.
- X: Den aktuellen Bereich schließen.
Vergleich
In Bezug auf die Funktionalität sind screenbeide tmuxähnlich und bieten die gleichen Hauptfunktionen. Die Art und Weise, wie Sie auf diese Funktionen zugreifen, ist deutlich unterschiedlich. tmuxbietet elegantere und bequemere Möglichkeiten, auf die verschiedenen Funktionen zuzugreifen. Dies ist jedoch nicht der einzige Unterschied.
Die Möglichkeit, Sitzungen und Fenster umzubenennen, tmuxist praktisch und die Tatsache, dass die Bereiche beim erneuten Anhängen einer Sitzung erhalten bleiben, ist bahnbrechend.
screenverliert dagegen alle Fenster, wenn Sie eine Sitzung trennen und erneut verbinden. Das ist fast so ärgerlich, dass Sie das Trennen von vornherein vermeiden.
Es gibt noch viel mehr zu bieten tmux, darunter unglaublich flexible Skriptfunktionen. Sie sollten es sich unbedingt einmal ansehen.