Login
Newsletter
Werbung

Do, 12. Juni 2014, 15:00

tmux – Das Kung-Fu der Terminal-Ninjas

Von wogri

Konfigurationsdatei

Eine gut konfigurierte Terminal-Sitzung kann enorm viel Zeit für diejenigen ersparen, die täglich viel auf der Shell arbeiten. Dabei baut man sich in einer Datei die Struktur seiner Arbeitsumgebung auf, konfiguriert Sessions, Windows, Panes, Tastaturkürzel etc. und lässt diese Datei bei jedem Start von tmux auslesen. Dabei sei erwähnt, dass lediglich ein tmux new einem Start von tmux entspricht, bei tmux attach wird bei einer vorhandenen tmux-Umgebung die Konfigurationsdatei nicht mehr ausgelesen. Alles, was man in der Konfigurationsdatei speichert, kann man auch zur Laufzeit mit »Strg + B« und dem Kommando :<KOMMANDO> direkt in tmux einspeisen.

Die Konfigurationsdatei wird als ~/.tmux.conf erstellt und beinhaltet ganz normale tmux-Befehle ohne den führenden Doppelpunkt:

new -d -s wogriat -n workhorse 'ssh-agent -a ~/.ssh-agent-tmux -t 43200 bash'
neww -d -n workhorse2
neww -d -n mutt mutt
setw -t wogriat:mutt monitor-content 'New mail '
set -t wogriat status-bg green
bind ^A last-window
...

Die Manpage von tmux gibt Aufschluss über die verwendeten Direktiven – in kurzen Worten öffnet man in Zeile 1 eine Session mit dem Namen wogriat. Diese Session hat als erstes Window das Fenster mit dem Namen workhorse, welche den SSH-Agent mit einer Kennwort-Ablaufzeit von 43200 Sekunden ausführt und danach die Bash startet. In Zeile 2 wird ein zweites Fenster auf workhorse erstellt. Das dritte Fenster wird von mutt belebt, in der vierten Zeile wird tmux instruiert, das mutt-Window hervorzuheben, wenn darin der String New mail vorkommt. Die fünfte Zeile stellt den Hintergrund der Session auf grün und in Zeile 6 wird der Shortcut für das Wechseln zwischen dem letzten Window analog zum Programm screen auf »Strg + A« gelegt. Meine vollständige tmux-Konfiguration findet man auf meiner Website.

Die Auswahl an Windows innerhalb einer Session

Wolfgang Hennerbichler

Die Auswahl an Windows innerhalb einer Session

Tastaturkürzel anpassen

Menschen, die sehr an den Editor vi(m) gewöhnt sind, können das Tastaturverhalten von tmux so anpassen, dass die bekannten »HJKL«-Tasten anstatt der Cursortasten verwendet werden können. Damit erspart man sich beim Scrollen das Verlassen der gewohnten Fingerhaltung auf der Tastatur. (Wer nun den Kopf schüttelt: Das spart bei viel Arbeit auf der Konsole wirklich Zeit und man wird sehr flink.) Per Default ist tmux im emacs-Modus. Mittels »Strg + B« und dem Befehl :setw -g mode-keys vi wechselt man in den vi-Modus. Auch das Anchor-Kommando »Strg + B« kann man wie z.B. in screen auf »Strg + A« anpassen. Mehr dazu gab es oben unter »Konfigurationsdatei«.

Copy & Paste in tmux

Einer der Nachteile in tmux ist, dass Copy & Paste bei Windows, die größer als die aktuelle Kommandozeile sind, etwas schwierig wird. Dem kann abgeholfen werden, wenn der Zielort ebenfalls ein tmux-Window ist. Man beginnt die Markierung seines Textes, indem man »Strg + B« und »AltGr + 8« (also »[«) drückt. Damit kann man innerhalb des tmux-Windows so weit nach oben scrollen, bis das History-Limit (anpassbar z.B. mit set -g history-limit 5000) erreicht ist. Zum Starten der Markierung drückt man die Leertaste (oder »Strg + Leertaste« im Emacs-Modus), und man kann mit den Cursor-Tasten einen Bereich markieren. Die Markierung schließt man mit »Enter« (bzw. »Alt + W« im Emacs-Modus) ab.

Nun wechselt man in ein beliebiges Window (innerhalb derselben Session) und kann den Inhalt des Buffers mit »Strg + AltGr + 9« (also »Strg + ]«) einfügen.

SSH-Agent in tmux

Im Beispiel der Konfigurationsdatei wurde ein SSH-Agent gestartet, der es erlaubt, innerhalb aller tmux-Sitzungen das Kennwort des Private Keys zu speichern. Dadurch muss man bei SSH-Verbindungen zu Servern das Kennwort des Private Key nur einmal täglich eingeben. Natürlich führt das bei einer gestohlenen tmux-Session (bei Einbruch in den tmux-Server) dazu, dass der Angreifer für die Lebensdauer des SSH-Agent-Parameters -t sich auf eventuell beliebige Server verbinden kann – es ist daher ratsam, die Bash-History jedes Mal beim Logout zu leeren und den Server sehr gut abzusichern.

Shell Sharing

tmux eignet sich hervorragend für eine geteilte Terminal-Session zwischen zwei oder mehreren Usern. Dabei genügt es, dass der erste Benutzer eine tmux-Session erstellt und der zweite Benutzer (mit der gleichen Unix-UID) einfach mit tmux attach in die Session zusteigt. tmux verringert dabei die Größe des Terminalfensters auf den kleinsten gemeinsamen Nenner. Damit sehen alle die gleiche Oberfläche.

Befehle multiplexen

Mit den richtigen Optionen lässt sich tmux sogar verwenden, um Split-Screens (Panes) zu verschiedenen Servern aufzubauen und Tastaturbefehle an alle Server gleichzeitig zu schicken. Dazu erstellt man ein oder mehrere Panes und nutzt den Befehl :set synchronize-panes on.

Zusammenfassung

Für Terminal-Ninjas bietet tmux eine Reihe von sehr komfortablen Möglichkeiten, um sich die Arbeitsumgebung am Server einzurichten und nicht am Client.

Autoreninformation

Wolfgang Hennerbichler (Webseite) ist Site Reliability Engineer bei Google Zürich. Er ist begeisterter tmux-Nutzer und findet, dass tmux sein Leben enorm vereinfacht hat.

Dieser Artikel ist in freiesMagazin 05/2014 (ISSN 1867-7991) erschienen. Veröffentlichung mit freundlicher Genehmigung.

  • Das Werk darf vervielfältigt, verbreitet und öffentlich zugänglich gemacht werden, Abwandlungen und Bearbeitungen des Werkes müssen unter den gleichen Bedingungen weitergegeben werden. Der Name des Autors/Rechteinhabers muss in der von ihm festgelegten Weise genannt werden.

    - Weitere Informationen
Kommentare (Insgesamt: 14 || Alle anzeigen )
Ninja (Marcus Moeller, Mi, 18. Juni 2014)
Tastenkombi beim Paste-Beispiel unvollständig (Marc-nichteingeloggt, Mo, 16. Juni 2014)
Re: sleep 5h && shutdown -h now (hjb, Sa, 14. Juni 2014)
sleep 5h && shutdown -h now (Berniyh, Sa, 14. Juni 2014)
tssh (nean, Sa, 14. Juni 2014)
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung