tmux  Bild © eigenetmux (Bild © eigene)

tmux basiert auf einer hierarchischen Struktur, die es ermöglicht, dass ein einzelnes Terminalfenster als Zugang zu mehreren Umgebungen dient. Die Hierarchie ist wie folgt aufgebaut:

  • **tmux-Server: Der Hintergrundprozess, der alle Sitzungen verwaltet.
  • **Sitzung: Ein Container auf oberster Ebene für ein bestimmtes Projekt oder eine bestimmte Aufgabe. Sitzungen sind persistent; sie bleiben auf dem Server aktiv, auch nachdem sich ein Benutzer abgetrennt hat.
  • **Fenster: Innerhalb einer Sitzung können mehrere Fenster erstellt werden, die ähnlich wie Tabs in einem Webbrowser funktionieren.
  • **Bereich: Fenster lassen sich weiter in Bereiche unterteilen, sodass ein Benutzer mehrere Terminalausgaben (wie z. B. einen Texteditor und ein Systemprotokoll) gleichzeitig auf einem Bildschirm anzeigen kann.

Installationsanleitung

tmux ist für die meisten gängigen Linux-Distributionen verfügbar. Die Installation erfolgt über den Standard-Paketmanager:

Debian- und Ubuntu-Systeme

apt install tmux

CentOS- und RHEL-Systeme

dnf install tmux

Sitzungsverwaltung und Persistenz

Der Kernvorteil von tmux liegt in seiner Fähigkeit, die Terminalsitzung von der SSH-Verbindung zu entkoppeln.

Sitzungen initialisieren

Eine einfache Sitzung lässt sich durch die Ausführung von tmux starten. In professionellen Umgebungen ist es jedoch üblich, Sitzungen zu benennen, um Verwechslungen zu vermeiden.

  • So erstellst du eine benannte Sitzung: tmux new -s [Sitzungsname]
  • So erstellst du eine Sitzung mit einem bestimmten Namen für das Startfenster: tmux new -s [Sitzungsname] -n [Fenstername]

Sitzungsstatus steuern

Administratoren können aktive Sitzungen mit den folgenden Befehlen überwachen und zwischen ihnen wechseln:

Sitzungen auflisten:

tmux ls  

oder

 tmux list-sessions

Wiederverbindung zu einer Sitzung herstellen:

tmux attach -t [Sitzungsname] 

(Kurzform: tmux a -t [Sitzungsname] )

Eine Sitzung beenden:

tmux kill-session -t [Sitzungsname] 

**Den gesamten tmux-Server anhalten: tmux kill-server

Um die Verbindung zu einer Sitzung zu trennen, während die Prozesse weiterlaufen (Detach), drückst du die Präfix-Taste gefolgt von d.

Präfix-Taste und die Befehlsausführung

Alle tmux-Befehle werden über eine Präfix-Taste ausgelöst, die dem Multiplexer mitteilt, dass der nachfolgende Tastenanschlag ein tmux-Befehl ist und kein Befehl für die Shell. Standardmäßig ist das Präfix Strg + b.

Beispiel: Um eine Sitzung zu trennen, lautet die Tastenfolge Strg + b, gefolgt von d.

Arbeitsbereichsorganisation: Fenster und Bereiche

tmux bietet eine detaillierte Kontrolle über das visuelle Layout des Terminals.

Fensternavigation

Fenster ermöglichen es dir, verschiedene Aufgaben innerhalb derselben Sitzung voneinander zu trennen.

  • Neues Fenster erstellen: Präfix + c
  • Zwischen Fenstern wechseln: Präfix + n (nächstes), Präfix + p (vorheriges) oder Präfix + [0–9] (bestimmter Index).
  • Verwaltung: Präfix + w listet alle Fenster auf, Präfix + , benennt das aktuelle Fenster um und Präfix + & schließt es.

Bearbeitung von Bereichen

Bereiche ermöglichen eine geteilte Bildschirmansicht des Terminals.

  • Aufteilung: Präfix + % erstellt eine vertikale Aufteilung; Präfix + erstellt eine horizontale Aufteilung.
  • Navigation: Präfix + Pfeiltasten oder Präfix + o ermöglichen es dir, zwischen den Bereichen zu wechseln.
  • Größenanpassung: Präfix + Strg + Pfeiltasten passen die Abmessungen des aktiven Bereichs an.
  • Weitere Funktionen: Präfix + z schaltet einen Bereich zwischen maximierter und normaler Größe um, während Präfix + x den Bereich schließt. Präfix + Leertaste wechselt zwischen vordefinierten Layouts hin und her.

Systemkonfiguration und Anpassung

Das Verhalten von tmux wird durch die Konfigurationsdatei ~/.tmux.conf gesteuert. Diese Datei ermöglicht es Administratoren, Standardeinstellungen zu überschreiben, um die Bedienbarkeit zu verbessern.

Gängige Konfigurationsparameter

Professionelle Konfigurationen enthalten oft die folgenden Anpassungen:

  • Änderung des Präfixes: Ändere das Präfix auf Strg + a (ähnlich wie bei GNU Screen) über unbind C-b und set -g prefix C-a.
  • Erweiterungen der Benutzeroberfläche: Aktiviere die Mausunterstützung (set -g mouse on) und die Unterstützung für 256-Farben-Terminals (set -g default-terminal "screen-256color").
  • Indizierung: Anpassen des Startindexes von Fenstern und Bereichen von 0 auf 1 (set -g base-index 1).
  • Leistung: Reduzieren der escape-time auf 0 für eine schnellere Reaktion in Editoren wie Vim.
  • Darstellung: Festlegen der Farben und Stile der Statusleiste, um das aktive Fenster und den Sitzungsnamen deutlich zu unterscheiden.

Erweiterte Tastenbelegungen

Zur Optimierung der Navigation können benutzerdefinierte Tastenbelegungen in die Konfigurationsdatei aufgenommen werden. Zum Beispiel die Implementierung von Vim-ähnlichen Bewegungsbefehlen (h, j, k, l) zum Wechseln zwischen Bereichen und das Erstellen von Tastenkombinationen zum Teilen von Bereichen (z. B. die Belegung von | und - für vertikale und horizontale Teilungen).

Um Änderungen an der Konfigurationsdatei ohne Neustart des Servers zu übernehmen, wird der Befehl tmux source-file ~/.tmux.conf ausgeführt.

Datenverarbeitung und Kopiermodus

tmux verfügt über einen eigenen Puffer zum Kopieren und Einfügen von Text, was unerlässlich ist, wenn die Mausintegration deaktiviert ist.

  • 1.Kopiermodus aufrufen: Präfix + [
  • 2.Navigation: Verwende die Pfeiltasten oder Vim-Tasten (hjkl).
  • 3.Auswahl: Leertaste startet die Auswahl.
  • 4.Kopieren: Enter kopiert den Text in den tmux-Puffer und beendet den Modus.
  • 5.Einfügen: Präfix + ] fügt den gepufferten Text ein.

Automatisierung und Skripting

Für komplexe Umgebungen unterstützt tmux die Automatisierung über Shell-Skripte und Tools von Drittanbietern.

Shell-Skripte für Layouts

Administratoren können Bash-Skripte schreiben, um eine Sitzung mit einem bestimmten Layout und vorinstallierten Befehlen zu starten. Durch die Verwendung von tmux new-session -d zum Erstellen einer Sitzung im Hintergrund, tmux split-window zum Organisieren des Bildschirms und tmux send-keys zum Ausführen von Startbefehlen (wie htop oder vim) lässt sich ein kompletter Arbeitsbereich sofort bereitstellen.

tmuxinator

Für eine höhere Abstraktion ermöglicht tmuxinator die Definition von Projektumgebungen mithilfe von YAML-Dateien. So kannst du Fenster, Bereiche und die darin auszuführenden Befehle festlegen und die gesamte Umgebung mit einem einzigen Befehl starten:

tmuxinator start [project_name]

Erweiterte Verwaltungsfunktionen

Synchronisierte Bereiche

Bei der gleichzeitigen Verwaltung mehrerer Server ist die Funktion synchronize-panes unverzichtbar. Durch die Ausführung von Präfix + : setw synchronize-panes on wird jeder Tastenanschlag, der in einem Bereich eingegeben wird, in allen Bereichen des aktuellen Fensters gespiegelt. Das ist besonders nützlich, um denselben Befehl über mehrere SSH-Verbindungen hinweg auszuführen.

Gemeinsame Sitzungen

tmux ermöglicht es mehreren Benutzern, sich an dieselbe Sitzung anzuschließen. Das wird für die gemeinsame Fehlerbehebung oder Paarprogrammierung genutzt.

An einer Sitzung teilnehmen:

tmux attach -t [session_name]

Schreibgeschützter Zugriff:

tmux attach -t [Sitzungsname] -r

SSH-Integration

Um sicherzustellen, dass eine tmux-Sitzung bei der Anmeldung immer verfügbar ist, kann eine bedingte Überprüfung in die Datei ~/.bashrc auf dem Server eingefügt werden:

if [ -z "$TMUX" ]; then tmux attach -t default || tmux new -s default; fi