Home » Linux » Konsolen Multitasking mit tmux

Konsolen Multitasking mit tmux

Heute schauen wir uns das nützliche Tool tmux an, mit dem man Multitasking auf Konsolen durchführen kann. Bestimmt habt Ihr schonmal einen längeren Befehl laufen gelassen und danach die Konsole beendet und Euch danach gewundert, wieso der Befehl, z.B ein rsync, nicht beendet wurden ist. Das liegt daran das viele Befehle ein aktive Verbindung mit dem Client vorausetzen. Der Einsatz des Terminal-Multiplexers tmux eröffnet Euch die Möglichkeit, das Multitasking über die Kommandozeilen Eurer bevorzugten Linux-Distribution effektiv zu nutzen. Mit tmux ist es Euch möglich, innerhalb eines einzelnen Terminals simultan mehrere Sitzungen zu erstellen, zu modifizieren, zu detachieren oder zu reintegrieren.

Linux, das sich neben Windows und macOS als eine der führenden Betriebssystem-Distributionen etabliert hat, ist als Open-Source-Software kostenfrei zugänglich. Die Kontrolle und das Management verschiedener Linux-Distributionen wie Ubuntu, Debian oder Linux Mint werden überwiegend durch die Nutzung der Kommandozeile oder des Terminals sowie spezifischer Linux-Kommandos realisiert. Für die parallele Nutzung, Verwaltung und Konfiguration von Konsolensitzungen in einem Terminal werden Terminal-Multiplexer wie GNU screen oder tmux verwendet. Diese Werkzeuge sind insbesondere für ihre Fähigkeit geschätzt, die Arbeit mit mehreren Prozessen und Aufgaben in einer Konsolen-Umgebung zu vereinfachen und zu optimieren.

Was ist tmux?

tmux, kurz für "terminal multiplexer", ist ein wertvolles Tool für Benutzer von Unix-ähnlichen Betriebssystemen. Es ermöglicht das effiziente Management mehrerer Terminal-Sitzungen innerhalb eines einzigen Bildschirms oder Terminalfensters. Durch die Verwendung von tmux könnt Ihr verschiedene Sitzungen erstellen, entfernen und zwischen ihnen wechseln, ohne verschiedene Terminalfenster öffnen zu müssen.

Die Geschichte von tmux beginnt im Jahr 2007, als es von Nicholas Marriott entwickelt wurde. Marriott sah die Notwendigkeit für einen modernen Terminal-Multiplexer, der die Funktionalitäten des damals weit verbreiteten GNU Screen verbessern und erweitern sollte. GNU Screen, obwohl leistungsstark, hatte seine Grenzen und wurde seit einiger Zeit nicht mehr aktiv weiterentwickelt. tmux wurde als Antwort auf diese Lücke entwickelt, mit dem Ziel, eine robustere und benutzerfreundlichere Alternative zu bieten.

Eines der Hauptmerkmale von tmux ist seine Fähigkeit, Sitzungen zu "detachieren" und später wieder "attachen". Das bedeutet, dass Ihr eine Sitzung starten, sie laufen lassen, sich von ihr trennen (detachen) und später, auch von einem anderen Terminal aus, wieder darauf zugreifen könnt. Dies ist besonders nützlich, wenn Ihr Langzeitprozesse auf einem Server ausführt, zu denen Ihr periodisch zurückkehren müssen.

Außerdem bietet tmux eine beeindruckende Anpassbarkeit und Skriptfähigkeit. Ihr könnt es an Eure spezifischen Bedürfnisse oder Euren Workflow anpassen, indem Ihr die Konfigurationsdatei (.tmux.conf) bearbeitet. Mit tmux könnt Ihr auch komplexe Fensterlayouts erstellen und leicht zwischen einer Vielzahl von Paneelen und Fenstern wechseln.

Wozu sich tmux nutzen lässt

Genau wie der Terminal-Multiplexer GNU screen bietet tmux die Möglichkeit, im Terminal einer Linux-Distribution in mehreren Sitzungen und Fenstern gleichzeitig zu arbeiten sowie Fenster in mehrere Bereiche für Multitasking zu teilen und zu konfigurieren. Auf diese Weise können wir parallele Prozesse und Programme laufen lassen und verschiedene Befehle gleichzeitig ausführen. Auch Remote-Sitzungen und die Zusammenarbeit mit mehreren Nutzern und Nutzerinnen gleichzeitig sind so möglich. Ihr könnt zudem Prozesse und Sitzungen verlassen, in den Hintergrund verschieben und später dort weitermachen, wo Ihr aufgehört habt.

Über tmux gebt Ihr Kommandozeilenbefehle ein, um Eure Linux-Distribution zu steuern und zu bearbeiten. Dazu zählen beispielsweise Befehle für die Vergabe der Verzeichnisrechte mit chmod oder der „shutdown -h“-Befehl für den einfachen Linux-Shutdown. Während Ihr tmux in Ubuntu, Linux oder anderen Linux-Distributionen problemlos einsetzen können, lässt sich tmux in Windows nur über das WSL bzw. WSL2 (Windows-Subsystem für Windows 2) verwenden. Mit dem WSL2 könnt Ihr Linux-Anwendungen und Linux-Tools auch in Windows nutzen.

Bedienung von tmux erklärt

Nachdem Ihr tmux über die offiziellen Paketquellen Eures Linux-Systems installiert habt, könnt Ihr es mühelos über das Terminal starten, indem Ihr den Befehl tmux eingebt. Die Steuerung des Terminal-Multiplexers findet in einem herkömmlichen Terminal statt. Für die Nutzung von tmux sind einige Grundvoraussetzungen erforderlich:

  • Eine installierte Linux-Distribution oder ein auf Linux basierendes System
  • Ein Benutzerkonto mit Administratorrechten (Root-Rechte)
  • Zugang zu einem Terminal und Kenntnisse über die Nutzung von Kommandozeilenbefehlen und Tastaturkürzeln

Wesentliche Elemente in der Bedienung von tmux umfassen Terminal-Sitzungen, Fenster und Panes (Bereiche innerhalb der Fenster):

  • Terminal-Sitzungen: Hierin führt Ihr Eure Aufgaben und Befehle aus und verwaltet Eure Linux-Distribution.
  • Fenster: Wenn Ihr innerhalb einer Sitzung verschiedene Aufgaben gleichzeitig, aber getrennt voneinander bearbeiten möchtet, bietet Euch tmux die Möglichkeit, mehrere Fenster innerhalb einer Sitzung zu verwenden.
  • Panes: Diese Fenster lassen sich weiter in unterschiedliche Bereiche, sogenannte Panes, unterteilen. So könnt Ihr beispielsweise Error Logs überwachen, während Ihr in einem anderen Bereich des gleichen Fensters weitere Aufgaben bearbeitet.

Für die effektive Nutzung von tmux setzt Ihr auf eine Kombination aus Kommandozeilenbefehlen sowie speziellen Tastaturkürzeln, die das Navigieren und Verwalten der Sitzungen, Fenster und Panes erleichtern.

tmux installieren und anwenden: Schritt für Schritt

Die Installation für tmux ist sehr einfach: öffnet Eure Konsole und gebt folgenden Befehl in die Befehlszeile:

sudo apt-get install tmux

tmux-Befehle

Schauen wir uns die wichtigsten Befehle der Reihe nach an:

tmux starten

tmux

Neue tmux-Sitzung starten und benennen

tmux new -s [Sitzungsname]

tmux-Sitzung beenden

exit

Verbindung zu letzter tmux-Sitzung wiederherstellen

tmux a -t [Sitzungsname]

oder

tmux a #

Panes anpassen mit [Strg] + [B] + [:] und resize-pane

Wenn Ihr ein Fenster in Panes aufteilt, habt Ihr die Möglichkeit, die Panes nach Belieben zu konfigurieren. Dafür drücken wir die Tastenkombination [Strg] + [B] + [:]. Nun können wir mit folgenden Befehlen Panes anpassen:

  • resize-pane -D: Trennlinie zwischen Panes nach unten („downwards“) bewegen
  • resize-pane -U: Trennlinie zwischen Panes nach oben („upwards“) bewegen
  • resize-pane -R: Trennlinie zwischen Panes nach rechts bewegen
  • resize-pane -L: Trennlinie zwischen Panes nach links bewegen

Ihr könnt die Trennlinie auch wie folgt um vordefinierte Zellen bewegen; dies wirkt sich jedoch auf alle Panes im Fenster aus:

  • resize-pane -U 10: Trennlinie 10 Zellen nach oben bewegen
  • resize-pane -t 2 -R 5: Trennlinie 5 Zellen nach rechts bewegen

Pane maximieren und minimieren (zuvor die Tastenkombination [Strg] + [B] + [:])

resize-pane -Z

Abtrennen („detach“) von bestehender Sitzung (ggf. mit Sitzungsnamen)

tmux detach

Verbinden („attach“) zu bestehender Sitzung (ggf. mit Sitzungsnamen)

tmux attach

tmux-Tastenkombinationen zu den Sitzungen

In jeder Sitzung könnt Ihr beliebig viele Fenster öffnen und neue Sitzungen starten. Ihr agiert hier unter der Hauptsitzung, die Ihr mit tmux new -s <Sitzungsname> erstellt habt. Neben der Bedienung durch Kommandozeilenbefehle und Skripte, wird tmux wie bereits beschrieben über Tastenkombinationen gesteuert. Um die Steuerung mittels Tastenkürzeln zu aktivieren, betätigt Ihr zunächst [Strg] + [B]. Alle darauf folgenden Tastatureingaben führen die jeweils gewünschten Aktionen aus. Einige der zentralen Tastenkombinationen sind:

Befehle für Sitzungen:

  • S: Anzeige aller Sitzungen und Wechsel zwischen Sitzungen
  • $: Aktuelle Sitzung umbenennen
  • D: Bestehende Sitzung abtrennen („detach“) und in Hintergrund verschieben
  • ?: Anzeige der aktuell aktiven Tastenkombinationen (Hilfe-Bereich öffnen)

Befehle für Fenster:

  • C: Neues Fenster erzeugen/öffnen
  • W: Alle aktuell bestehenden Fenster auflisten, zwischen Fenstern wechseln
  • L: Zum letzten benutzten Fenster wechseln
  • P: Zum chronologisch vorausgehenden Fenster wechseln
  • N: Zum chronologisch nächsten Fenster wechseln
  • ,: Aktuelles Fenster umbenennen
  • &: Aktuelles Fenster beenden (mit „y“ bestätigen)
  • 1, 2, 3, (…): Zu Fenster Nummer X springen
  • [: Scrollmodus nutzen (mit Pfeiltasten in aktuellem Fenster scrollen)

Befehle für Panes im aktuellen Fenster

  • X: Aktuelles Pane schließen
  • %: Aktuelles Pane vertikal teilen (zweites Pane im Fenster entsteht)
  • ": Aktuelles Pane horizontal teilen (zweites Pane im Fenster entsteht)
  • Pfeiltasten (links, rechts, oben, unten): Navigieren zwischen den Panes
  • H: Zum linken Pane springen
  • I: Zum rechten Pane springen
  • J: Zum unteren Pane springen
  • K: Zum oberen Pane springen
  • Q: Anzahl der Panes anzeigen
  • O: Chronologisch durch alle Panes navigieren
  • }: Aktuelles Pane mit den darauffolgenden vertauschen
  • {: Aktuelles Pane mit dem vorausgehenden vertauschen
  • Leertaste: Zwischen den Aufteilungen von Panes wechseln
  • !: Aktuelles Pane lösen und in neuem Fenster öffnen

Beispiel Anwendung von tmux

Wir schauen uns die Nutzung von tmux anhand eines Beispiels mal an:

Schritt 1

Startet tmux durch Eingabe von tmux oder tmux new -s <Sitzungsname> im Terminal. Sobald tmux aktiv ist, erscheint am unteren Rand eine Statusleiste, die den Hostnamen (Nutzername@host-server), die aktuelle Zeit und das Datum anzeigt. Links unten findet Ihr den Namen der aktuellen Sitzung (falls vergeben) und die Anzahl der Fenster, angezeigt im Format „[0] 0:bash“. Das erste Fenster ist mit „0“ gekennzeichnet. Sollte ein Prozess in diesem Fenster aktiv sein, erscheint dieser hinter der Fensternummer, beispielsweise „0:bash“.

Schritt 2

Bedient tmux mit Kommandozeilenbefehlen und Tastenkombinationen. Um tmux-Befehle zu initiieren, verwendet [Strg] + [B] oder für das Konfigurieren von Panes [Strg] + [B], gefolgt von [:], um die Aufmerksamkeit von tmux auf Euch zu ziehen.

Schritt 3

Arbeit in dieser Konsole nach Euren wünschen. Ihr startet einen Script oder einen Befehl welcher nicht beendet werden darf oder entsprechend lange dauert. Öffnet ein neues Fenster in der Sitzung durch Drücken von STRG+B gefolgt von [C].

Schritt 4

Beendet eine Konsolen-Sitzung mit dem Befehl exit . Um die komplett tmux Sitzung zu beenden und in den Hintergrund zu verschieben, verwendet das Tastenkürzel [Strg] + [D].

Schritt 5

Um eine neue Sitzung zur ersten zu initiieren, benutzt erneut den Befehl tmux new -s <Sitzungsname>. Die Statusleiste unten informiert Euch, in welcher Sitzung Ihr Euch gerade befindet.

Schritt 6

Innerhalb tmux: Um ein Fenster in separate Bereiche, sogenannte Panes, aufzuteilen, drückt [%] für eine vertikale Teilung oder ["] für eine horizontale Teilung. Mit den Pfeiltasten könnt Ihr zwischen den Panes wechseln.

Schritt 7

Wenn Ihr eine aktive Sitzung wieder abtrennen wollt, aber die Prozesse weiterlaufen lassen wollt, verwendet wieder den Befehl tmux detach oder STRG+B plus D . Die Sitzung und alle laufenden Prozesse bleiben im Hintergrund aktiv. Um die Sitzung erneut aufzurufen, stellt die Verbindung mit tmux attach wieder her.

Alternative GNU Screen und die Unterschiede

Auf den ersten Blick mögen GNU screen und tmux sehr ähnlich erscheinen, da beide als Terminal-Multiplexer fungieren und essentielle Funktionen für die Verwaltung von Terminal-Sitzungen bieten. Bei genauerer Betrachtung zeigen sich jedoch einige signifikante Unterschiede in ihrer Funktionsweise und Benutzerfreundlichkeit.

Ein augenfälliger Unterschied liegt in der Aktivierung der Steuerbefehle. Während tmux das Tastenkürzel [Strg] + [B] für die Einleitung von Befehlen verwendet, nutzt GNU screen dafür [Strg] + [A]. Dies mag eine kleine Abweichung sein, doch sie markiert den Beginn einiger weiterer Differenzen zwischen den beiden Tools.

In Bezug auf die Benutzeroberfläche bietet tmux direkt nach der Installation eine Statusleiste am unteren Rand des Fensters. Diese Statusleiste zeigt standardmäßig Informationen wie den Namen der aktuellen Sitzung an und erleichtert so die Orientierung. GNU screen hingegen verzichtet standardmäßig auf diese Statusanzeige. Falls Ihr eine solche Anzeige in GNU screen wünscht, müsst Ihr sie manuell in der Konfigurationsdatei einrichten.

tmux zeichnet sich zudem durch eine vereinfachte Handhabung beim Benennen und Umbenennen von Sitzungen und Fenstern aus. Diese Funktionen tragen zur Übersichtlichkeit bei und machen das Navigieren zwischen verschiedenen Fenstern und Sitzungen intuitiver. Außerdem bietet tmux eine höhere Sicherheit in Bezug auf das Management von Fenstern. Während in GNU screen ein Fenster verloren gehen kann, wenn es detacht und in den Hintergrund verschoben wird, stellt tmux sicher, dass Ihr detachte Fenster mühelos über Kommandozeilenbefehle wiederherstellen oder eine Liste aller aktiven Fenster abrufen könnt. Diese Features machen tmux zu einem robusten und benutzerfreundlichen Tool für die Verwaltung von Terminal-Sitzungen.

Fazit tmux

Sei es das Umbenennen von Fenstern und Sitzungen oder die hilfreichen Status- und Sitzungsanzeigen im unteren Fensterbereich, tmux wird vielen Nutzern und Nutzerinnen im Vergleich zu GNU screen bedienfreundlicher und übersichtlicher erscheinen. Wenn Sie mit mehreren Prozessen und Programmen im Terminal gleichzeitig arbeiten und auf einfaches, effizientes Multi-Tasking angewiesen sind, erweist sich tmux als sinnvoller und lohnender Terminal-Multiplexer, der noch dazu kostenlos ist.

Ähnliche Beiträge

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert