tmux
Artikel in Arbeit
Dieser Artikel wird momentan von uname erstellt. Als Fertigstellungsdatum wurde der 28.02.2010 angegeben.
Achtung: Insbesondere heißt das, dass dieser Artikel noch nicht fertig ist und dass wichtige Teile fehlen, oder sogar falsch sein können. Bitte diesen Artikel nicht als Anleitung für Problemlösungen benutzen!
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Dieser Artikel ist mit keiner aktuell unterstützten Ubuntu-Version getestet! Bitte teste diesen Artikel für eine Ubuntu-Version, welche aktuell unterstützt wird. Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
tmux 🇬🇧 ist ein Fenstermanager zur Verwendung mit textbasierten Eingabefenstern (Textkonsole). Hierbei ist es möglich, innerhalb eines einzigen Zugangs (zum Beispiel über ein Terminal oder eine Terminalemulation) verschiedene virtuelle Konsolensitzungen zu erzeugen und zu verwalten. Darüberhinaus können Sitzungen getrennt und später fortgeführt werden.
Ein Anwendungsbeispiel: Man meldet sich an seinem Server mittels SSH an und startet ein Programm. Beendet man nun die SSH-Sitzung wird auch das Programm beendet (auch wenn es noch läuft). Dies kann man nun über tmux am Laufen halten: Man meldet sich per SSH an, startet tmux, danach das gewünschte Programm, detached und kann sich abmelden. Im Hintergrund arbeitet dann das Programm weiter und man kann beim nächsten Anmelden die Sitzung mit dem Programm wieder aufnehmen.
Installation¶
Zuerst muss das Paket [1]
tmux
Befehl zum Installieren der Pakete:
sudo apt-get install tmux
Oder mit apturl installieren, Link: apt://tmux
installiert werden. Mit dem Befehl
tmux
in einem Terminal [2] lässt sich der Fenstermanager danach starten.
Bedienung¶
Allgemein¶
Wichtige Befehle¶
Die zwei wichtigsten Befehle besser gesagt Shortcuts die man kennen muss sind einmal:
Zum Erstellen einer neuen Sitzung: Strg + B + C
Und um zwischen den einzelnen Sitzungen umzuschalten: Strg + B + N
Eine Übersicht über alle Tastenkürzel bekommt man mit Strg + B , gefolgt von ? .
Eine Sitzung beendet man einfach, indem man die dort laufende Shell beendet, also entweder mit dem Befehl exit
oder durch Drücken von
Strg +
B +
& .
Automatischer Aufruf¶
Mit den folgenden Erweiterung am Ende der Datei .bashrc oder der systemweiten /etc/bash.bashrc wird automatisch zu einer tmux-Session verbunden.
if [ -z $TMUX ]; then tmux attach || tmux new fi
Links¶
tmux 🇬🇧
Vorschlag zum weiteren Aus-/Rückbau¶
tmux 🇬🇧 ist ein sog. Terminal-Multiplexer (vergleichbar mit screen) und ermöglicht den Zugang zu einer beliebigen Anzahl von Terminals (oder Fenstern) und damit zu beliebig gestarteten Programmen. Das Programm wird wie screen
durch ein einzelnes Terminal[2] gesteuert, man kann sich aus Sitzungen ausklinken (detach) und diese zu einem späteren Zeitpunkt wieder aufnehmen (attach).
Ein Anwendungsbeispiel: Wenn man sich über SSH auf einem Server anmeldet und die Sitzung wird unterbrochen, z.B. durch abmelden, dann werden alle gestarteten Programme umgehend beendet (siehe auch Signale -SIGHUP dazu). Um dies zu verhindern startet die div. Programme auf dem Server unter tmux
, anschließend klinkt man sich aus (detach), die Programma laufen im Hintergrund weiter. Zu einem späteren Zeitpunkt nimmt man die Sitzung wieder auf (attach) um z.B. die Ergebisse zu kontrollieren oder weitere Programme zu starten.
Einige Merkmale von tmux:
Leichtgewichtig, da eine Client-Server Struktur.
Farbliche Darstellung mittels ncurses.
Horizontales/vertikales splitten des Bildschirms.
Statusleiste mit Informationen zu Sitzungen, Fenstern, Programmnamen, Hostname und Datum/Uhrzeit.
Copy&Paste zwischen den verschiedenen Anwendungen.
Verwaltung mehrere "paste buffer".
Benennen und finden von Sitzungen.
Steuern mittels Tastenkombinationen und/oder Befehlen/Aliase
Tastaturbelegung von Emacs (standard) oder Vim auswählbar.
Gut dokumentierte Befehlsschnittstelle (manpage).
Anpassbar über die tmux.conf oder zur Laufzeit.
Über Skripte steurbar.
Installation¶
tmux
braucht libncurses5 und evtl libevent wie kann man das einbauen? Bei mir installiert ist: ncurses-base sowie ncurses-bin. libevent wird wohl für das einlesen/bearbeiten der config benötigt (hab ich im Inet so gefunden) bei mir wäre das libevent-1.4-2 ich habe Lucid
tmux
ist seit Karmic Kola in den Paketquellen enthalten und kann mit
tmux
Befehl zum Installieren der Pakete:
sudo apt-get install tmux
Oder mit apturl installieren, Link: apt://tmux
installiert[1] werden.
Bedienung¶
tmux
wird über ein normales Terminal[2] gestartet:
tmux -words [-28lquv ] [-c -file ... -shell-command ] [-f -file ... -file ] [-L -file ... -socket-name ] [-S -file ... -socket-path ] [command [flags ] ]
Sollte kein Server gestartet sein, so wird dieser automatisch mitgestartet.
tmux
kennt eine Reihe von Aufrufoptionen die in der Manpage sehr gut beschrieben sind. Für den normalen Start einer neuen tmux
-Sitzung reicht der Aufruf
tmux
aus, siehe dazu auch die Beispiele.
Kurztasten¶
tmux
kann fast ausschließlich über Kurztasten (Shortcuts) bedient werden. Die Kommandosequenz wird standardmäßig mit
Strg +
B eingeleitet und die folgende Eingabe wird als weiteres Kürzel interpretiert.
Einige ausgewählte Tastaturkürzel (Shortcuts) | |
Tastaturkürzel | Bedeutung |
Strg + B | Senden des Kurztasten-prefix |
Strg + B ? | Anzeige aller aktiven Shortcuts (keybindings). |
Strg + B d | (detach) Ausklinken/aushängen der akt. Sitzung (Client) und in den Hintergund verschieben, |
Strg + B s | (switch) Wechseln zwischen verschiedenen Sitzungen (Client). |
Strg + B c | (create) Erzeugen eines neuen Fensters (Shell), |
Strg + B & | Beenden der aktuellen Fensters, muss mit y bestätigt werden. |
Strg + B , | Umbenennen des aktuellen Fenstertitels |
Strg + B l | (last) Wechseln zum letzten aktiven Fenster (ist durch - markiert) |
Strg + B p | (previouse) Wechsel zum vorherigen Fenster (z.B. von 3 nach 2). |
Strg + B n | (next) Wechsel zum nächsten Fenster. |
Strg +
B nr. | Wechsel zur Fenster-Nr., nr.=der numerische Bezeichner des Fensters (0,1 ...) |
Strg + B w | (window-list) Anzeige der Liste aller Fenster, mit Pfeiltasten auswählbar. |
Strg +
B f sbg | (find) Suchen nach einem definierten sbg (Suchstring), z.B. Fenstername, und aktivieren des Fensters. |
Steuern der Fensterteile (panes). tmux kennt 5 voreingestellte Fensterlayouts (M-1 bis M-5). | |
Strg + B | Umschalten zwischen den verschiedenen Fensterlayouts (M-1 bis M-5). |
Strg + B % | Fenster horizontal in 2 Teile splitten. |
Strg + B " | Fenster vertikal in 2 Teile splitten. |
Strg + B o | (other) Wechseln zum nächsten Fensterteil (Pfeiltasten sind möglich). |
Strg + B q | (quote) Einbelnden einer Nummernanzeige im Fensterteil (pane numbers). |
Strg + B { | Fensterteil nach links verschieben. |
Strg + B } | Fensterteil nach rechts verschieben. |
Strg + B ! | Herauslösen des aktven Fensterteils als eigenständiges Fenster. |
Strg +
B x | Beenden der aktuellen Fensterteils, muss mit y bestätigt werden. |
Um den Kopiermodus zwischen den Fenstern/Fensterteilen zu nutzen siehe die Manpage und Beispiele unter den Links. |
Beispiele¶
Starten von tmux
in einer neuen Sitzung.
tmux
Starten von tmux
und wiederaufnehmen einer laufenden Sitzung.
tmux attach
Starten von tmux
mit einer Auwahlliste aller laufenden Sitzungen
tmux list-sessions
Starten einer tmux
-Sitzung mit dem Namen HOST1, darin wird ein neues Fenster mit dem Namen "Prozesse" und dem Programm htop gestartet.
tmux new-session -s "HOST1" \; neww -n "Prozesse" 'htop'
Öffen eines neuen Fensters durch Strg + B c oder mit:
tmux neww
Öffnen eines neuen Fensters und starten von htop
ohne das Fenster zu aktivieren
tmux neww -d htop
Öffnen des neuen Fensters 1 und starten des Programms top
.
tmux send-keys -t 1 "top" C-m
-t ist dabei das Zielfenster (target) und C-m sendet einen Zeilenumbruch (Enter).
Senden des Zeichens "q" an das Fenster 3 um das darin laufende top
zu beenden.
tmux send-keys -t :3 q
Beispiel einer angepassten tmux.conf¶
tmux
legt standardmäßig keine Konfigurationsdatei an. Im folgenden wird eine benutzerbezogene ~/.tmux.conf angelegt, bei der einige Standardeinstellungen verändert werden, u.a. wird die Tastatur-Einleitungssequenz auf
Strg +
A , analog screen geändert.
# Standard-Shortcut auf Ctrl-a umgestellt, anstatt Ctrl-b. set -g prefix C-a unbind-key C-b bind-key C-a send-prefix bind-key x confirm-before kill-window # Aktives Fenster in der Statuszeile markieren set-window-option -g window-status-current-bg yellow # Wenn noch keine Sitzung (Server) dann neue starten new # Akualisierungsintervall auf 5 Sek. einstellen. set status-interval 5 # Akustisches Signal einschalten set bell-action none
Beispiel einer bashrc-Modifikation¶
Mit den folgenden Erweiterung am Ende der Datei .bashrc oder der systemweiten /etc/bash.bashrc wird automatisch zu einer tmux-Session verbunden.
if [ -z "$TMUX" ] && [ $TERM != "screen" ]; then tmux attach -d [ $? -eq 0 ] && exit echo "WARNING: tmux exited with an error!" >&2 fi
Links¶
tmux🇬🇧 bei sourceforge.net
private Anweisung🇩🇪 von Christian Schneider
Gegenüberstellung🇩🇪 screen/tmux von Christian Schneider
linuxwiki.de🇩🇪 Mit Beispielskipte
openbsd.org🇬🇧 bei Openbsd
archlinux.org🇬🇧 incl. einer tmux.conf
jeffstory.org🇬🇧 Einführung mit vielen Screenshots