Tmux - ein moderner Terminalmultiplexer

Mi, 21. Oktober 2020, Marco

Einige kennen sicherlich das Kommandozeilentool GNU Screen. Nachfolgend möchte ich einen alternativen Terminalmultiplexer zu GNU Screen vorstellen. Bei diesem Tool handelt es sich um das in C geschriebene Tool tmux. Tmux ist unter der ISC-Lizenz öffentlich verfügbar und kann gemäss der Github-Seite auf unterschiedlichen BSDs, Linux, OS X und Solaris installiert werden.



Folgende drei Konzepte sollte man bei tmux kennen:

  • Sessions
  • Windows
  • Panes

Ich möchte die drei Konzepte kurz mit einem Webbrowser vergleichen. Eine Session (im Screenshot blau markiert) ist vergleichbar mit einem neuen separaten Fenster eines Browsers. Jede Tmux-Sitzung gehört zu einer Session. Eine Session kann mehrere Windows (im Screenshot rot markiert) haben. Ich würde ein Window mit einem Browser-Tab vergleichen. Zwischen den einzelnen Windows kann man einfach hin- und herwechseln und so zum Beispiel etwas im Hintergrund laufen lassen. Panes sind einzelne Abschnitte innerhalb eines Windows. Das Browser-Analogon dazu wären die einzelnen HTML-Elemente, welche unterschiedlich gross und unterschiedlich angeordnet werden können. Im Screenshot gibt es drei Panes: eines mit htop und zwei andere, welche nginx-Dateien überwachen.

Zur Steuerung von tmux können entweder Kommandos oder Tastenkombinationen verwendet werden. Standardmässig muss vor einem Kommando oder einer Tastenkombination immer der Präfix Ctrl+B verwendet werden. Tmux kann über ein Skript gestartet und konfiguriert werden, wenn man beispielsweise immer dasselbe Setup für eine Aufgabe benötigt.

Ich persönlich verwende tmux oft, wenn ich auf einem Remote-Server etwas machen muss. Hier sehe ich vor allem den Vorteil, dass die Session im Hintergrund weiterläuft und ich lokal auf dem Rechner weiterhin das Terminal verwenden kann. Einen weiteren Einsatzzweck für mich persönlich ist, wenn ich einen Text mit LaTeX schreibe und in einem separaten Window latexmk laufen lasse. Durch die Verwendung von tmux kann ich jederzeit zwischen den einzelnen Fenstern wechseln, falls es Fehler im Kompilier-Prozess geben sollte. Ausserdem verwende ich tmux oftmals, wenn ich weiss, dass etwas länger dauern könnte (z.B. syncthing oder rsync). Hier kann ich dann problemlos weiterhin im Terminal arbeiten und kann von Zeit zu Zeit den Fortschritt wieder anschauen.

Das Github-Wiki bietet eine ziemlich gute Dokumentation, ausserdem existieren unterschiedliche Anleitungen und Cheatsheets. Wer lieber ein Video sehen möchte, dem kann ich den Talk von Leyrer empfehlen.

Quellen: