Wie man tmux unter Linux benutzt (und warum es besser ist als Screen)
- Dave McKay
@TheGurkha
- 14. Mai 2020, 8:00 Uhr EDT
Der Linux-Befehl tmux
ist ein Terminalmultiplexer wie screen
. Seine Befürworter sind viele und lautstark, also haben wir beschlossen, die beiden zu vergleichen. Ist tmux
wirklich besser oder geht es nur darum, das zu bevorzugen, was Sie wissen?
tmux vs. screen
Sowohl die Befehle tmux
als auch GNU screen
sind Terminalmultiplexer. 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 Ihnen eine unabhängige Befehlszeile gibt.
Sie können eine Sitzung auch trennen und sie wird zu einer kopflosen Entität, die im Hintergrund ausgeführt wird. Wenn Sie bereit sind, können Sie ein neues Terminalfenster öffnen und die noch laufende Sitzung wieder 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 am Remotecomputer anmelden. Wenn die Verbindung wieder hergestellt ist, können Sie die Hintergrundsitzung erneut anhängen und wieder interaktiv verwenden.
Was ist der Bildschirmbefehl?
Der Befehl screen
ist auch ein Terminalmultiplexer und enthält zahlreiche Optionen. Informationen zu allem, was Sie damit tun können, finden Sie in unserem ausführlichen Artikel.
Dieses Mal konzentrieren wir uns auf tmux
. Im weiteren Verlauf werden wir erwähnen, wie screen
dasselbe Feature oder dieselbe Funktion behandelt.
Nur eines hat uns an screen
geärgert. Wir werden das abdecken, wenn wir dazu kommen, und sehen, ob tmux
besser abschneidet.
VERWANDT: Verwendung des Linux-Bildschirmbefehls
tmux installieren
Während screen
in der Regel standardmäßig auf gängigen Linux-Distributionen installiert ist, tmux
nicht. Um tmux
unter Ubuntu zu installieren, geben Sie Folgendes ein:
sudo apt-get install tmux
Auf Manjaro können Sie verwenden pacman
:
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 Uhrzeit und Datum angezeigt. Die linke Seite zeigt die folgenden sitzungsbezogenen Informationen:
- : Dies ist der Sitzungsname. Standardmäßig sind sie nummeriert und beginnen mit Null. Im Folgenden erfahren Sie, wie Sie Sitzungen aussagekräftige Namen geben können.
- 0: bash*: Die 0 gibt an, dass dies das erste Fenster in dieser Sitzung ist. Der einzige Prozess, der in dieser Sitzung ausgeführt wird, ist
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 einertmux
-Sitzung ein neues Fenster erstellen, werden dessen Fensternummer und der Name des darin ausgeführten Programms zur Statusleiste hinzugefügt.
Der Befehl screen
zeigt keine Statusleiste an. Sie müssen blind fliegen und sich auf Ihren Verstand verlassen, um zu wissen, was los ist, was ein wenig Übung erfordert.
Auf der positiven Seite verlieren Sie keine Zeile Terminalfenster-Immobilien. Natürlich würden Sie normalerweise Ihr Terminalfenster erweitern, um die Verwendung eines Terminalmultiplexers lohnenswert zu machen. 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 tmux
mit Tastenanschlägen gegeben, und es gibt zwei Teile dazu. Zuerst drücken Sie Strg + B, um die Aufmerksamkeit von tmux
zu erhalten. Sie drücken dann schnell die next-Taste, um einen Befehl antmux
zu senden. Befehle werden durch Drücken von Buchstaben, Zahlen, Satzzeichen oder Pfeiltasten gegeben.
Es ist dasselbe in 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 drücken Sie dann schnell X. Die Statusleiste wird gelb. Sie werden dann aufgefordert zu bestätigen, dass Sie das Fenster beenden 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; Y 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.
Die tmux
-Sitzung wird geschlossen und Sie kehren zur Befehlszeile zurück, von der aus Sie tmux
gestartet haben. Sie sehen „“ im Terminalfenster.
Dies scheint das Offensichtliche zu sein, aber es ist eine Bestätigung, dass Sie die Sitzung geschlossen und nicht losgelöst und ausgeführt haben. Wir werden das Trennen von Sitzungen unten besprechen.
Starten einer benannten tmux-Sitzung
Wenn Sie regelmäßig mehrere tmux
-Sitzungen starten, werden Sie schnell die Funktionalität schätzen, jeder von ihnen einen aussagekräftigen Namen zu geben. Sie können Sitzungen auch in screen
benennen, aber sie werden nirgendwo in den Sitzungsfenstern angezeigt.
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:
tmux new -s geek-1
Wenn die tmux
-Sitzung geladen wird, wird „geek-1“ als erster Eintrag in der Statusleiste ganz links angezeigt.
Hinzufügen weiterer Fenster
Um ein neues Fenster in der aktuellen Sitzung zu erstellen, drücken Sie Strg+B und dann C. In der aktuellen Sitzung wird ein leeres Terminalfenster angezeigt. Damit in diesem neuen Fenster etwas läuft, starten wir den Befehl dmesg
mit der Option -w
(follow):
dmesg -w
Jetzt haben wir zwei Fenster in der Sitzung; man läuft top
, und die andere dmesg
. Wir können jedoch nur einen nach dem anderen sehen (mehr dazu gleich).
Werfen Sie einen Blick auf die linke Seite der Statusleiste. Wir sind immer noch in der „Geek-1“ tmux
Sitzung. In Fenster Null wird top ausgeführt, und in Fenster eins wird dmesg
ausgeführt. Das Sternchen (*) nach dmesg
zeigt an, welches Fenster sichtbar ist.
Um zwischen den 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 der Fenster angezeigt.
Um die bernsteinfarbene Markierungsleiste zu verschieben, drücken Sie die Aufwärts- oder Abwärtspfeile, Home oder End. Im unteren Bereich der Anzeige wird eine Vorschau des Inhalts des hervorgehobenen Fensters angezeigt.
Drücken Sie die Eingabetaste, um zum markierten Fenster zu wechseln, oder Esc, um die Fensterliste zu verlassen, ohne zu wechseln.
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 top
in der Sitzung gestartet, sodass wir einen laufenden Prozess zum Demonstrieren 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 gibt eine Nachricht von tmux
, die uns mitteilt, dass die Sitzung getrennt ist. Es erinnert uns auch an den Namen, den wir der Sitzung gegeben haben. Dies ist praktisch, da wir dies verwenden, um eine Hintergrundsitzung anzuhängen und sie dann in einer interaktiven Sitzung wiederherzustellen.
Um eine abgetrennte Sitzung anzuhängen, verwenden wir den selbsterklärenden Befehl attach-session
mit der Option -t
(Zielsitzung). Wir geben auch den Namen der Sitzung an, an die wir uns erinnern möchten.
Wir geben Folgendes ein:
tmux attach-session -t geek-1
Unsere Sitzung kehrt zurück und wird wieder zu einer sichtbaren, interaktiven Sitzung.
Alle lang andauernden oder fortlaufenden Prozesse, die Sie vor dem Trennen der Sitzung gestartet haben, werden weiterhin im Hintergrund ausgeführt (es sei denn, sie sind beendet), wenn Sie die Sitzung anhängen.
screen
kann dies tun, aber nicht so intuitiv.
Umgang mit mehreren Sitzungen
Öffnen wir ein weiteres Terminalfenster und starten eine neue tmux
-Sitzung mit dem Namen „Geek-2“:
tmux new -s geek-2
In dieser Sitzung beginnen wir dmesg
:
dmesg -w
Jetzt haben wir unsere ursprüngliche „Geek-1“ tmux
-Sitzung und eine neue mit dem Namen „Geek-2.“
Die Statusleiste zeigt uns diese Sitzung „Geek-2“ genannt wird, und es hat ein Fenster, das läuft dmesg
.
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.
Dies ist eine Liste der Sitzungen. Die ähnliche Anzeige, die wir zuvor gesehen haben, war eine Liste von Fenstern in einer einzigen Sitzung.
Sie können die bernsteinfarbene Markierungsleiste verschieben, indem Sie die Aufwärts- und Abwärtspfeile, Start und Ende drücken. Im unteren Bereich wird eine Vorschau des Inhalts der hervorgehobenen 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 gelangen, 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 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.
Der Befehl screen
kann dies ebenfalls über einen ähnlichen Befehlssatz tun.
Arbeiten mit Fensterfenstern
Wenn Sie Strg+B und dann doppelte Anführungszeichen („“) drücken, teilen Sie das Fenster horizontal in zwei Fensterfenstern auf.
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 in Fenster eins sind. 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. Wir können dies zeigen, indem wir in jedem Bereich einen anderen Befehl ausführen.
Wir geben Folgendes ein:
uname -a
ls -hl
Um von einem Fensterbereich 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 drücken, und dann das Prozentzeichen (%)
es teilt den aktuellen Bereich vertikal.
Drücken Sie Strg+B und dann Q, um tmux
die Nummer jedes Bereichs kurz blinken zu lassen.
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 zu gelb, und Sie werden aufgefordert, zu bestätigen, dass Sie diesen Bereich schließen möchten. Drücken Sie Y, um den Bereich zu entfernen, oder N, um die Dinge so zu belassen, wie sie sind.
Wenn Sie Y drücken, wird der Bereich entfernt.
Der Befehl screen
verfügt ebenfalls über Fenster, die jedoch weniger intuitiv zu bedienen sind. Die Sache, die uns an screen
nervt, ist, dass wenn Sie eine Sitzung mit Fenstern trennen, diese verschwinden, wenn Sie diese Sitzung erneut anhängen. Das wird sehr schnell alt.
A 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.
- ,: Benennen Sie das aktuelle Fenster um.
- W: Listen Sie die Fenster auf.
- N: Zum nächsten Fenster wechseln.
- P: Zum vorherigen Fenster wechseln.
- 0 bis 9: Wechseln Sie zur angegebenen Fensternummer.
Bereichsbefehle
- %: Erstellen Sie eine horizontale Aufteilung.
- „: Erstellen Sie einen vertikalen Split.
- H oder Pfeil nach links: Wechseln Sie in den linken Bereich.
- I oder Pfeil nach rechts: Wechseln Sie in den Bereich rechts.
- J oder Pfeil nach unten: Wechseln Sie in den Bereich darunter.
- K oder Pfeil nach oben: Wechseln Sie in den Bereich oben.
- Q: Zeigen Sie kurz die Nummern an.
- O: Bewegen Sie sich der Reihe nach durch die Fenster. Jeder Druck bringt Sie zum nächsten, bis Sie alle durchlaufen.
- }: Tauschen Sie die Position des aktuellen Bereichs mit der nächsten aus.
- {: Tauschen Sie die Position des aktuellen Fensters mit der vorherigen aus.
- X: Schließt den aktuellen Bereich.
Wie sie sich vergleichen
In Bezug auf die Funktionalität funktionieren screen
und tmux
ähnlich und bieten die gleichen Hauptmerkmale. Die Art und Weise, wie Sie auf diese Funktionen zugreifen, unterscheidet sich deutlich. tmux
bietet schlankere und komfortablere Möglichkeiten, um zu den verschiedenen Funktionen zu gelangen. Dies ist jedoch nicht der einzige Unterschied.
Die Möglichkeit, Sitzungen und Fenster in tmux
umzubenennen, ist ordentlich, und die Tatsache, dass die Fenster beim erneuten Anhängen einer Sitzung beibehalten werden, ist ein entscheidender Faktor.
screen
, auf der anderen Seite verliert vollständig Scheiben, wenn Sie eine Sitzung trennen und wieder anbringen. Dies ist fast ärgerlich genug, um das Lösen überhaupt zu vermeiden.
Es gibt so viel mehr zu tmux
, einschließlich seiner unglaublich flexiblen Skriptfunktionen. Du schuldest es dir selbst, es zu überprüfen.
Dave McKay benutzte zuerst Computer, als gelochtes Papierband in Mode war, und er programmiert seitdem. Nach über 30 Jahren in der IT-Branche ist er heute Vollzeit-Technologiejournalist. Im Laufe seiner Karriere war er als freiberuflicher Programmierer, Leiter eines internationalen Softwareentwicklungsteams, Projektleiter für IT-Services und zuletzt als Datenschutzbeauftragter tätig. Dave ist ein Linux Evangelist und Open Source Advocate.Vollständige Biografie lesen „