OpenSource-Tipp: Tmux
Mit tmux ist es möglich, mit einem Terminal mehrere Sessions bzw. Shells zu verwalten und diese auch im Hintergrund weiterlaufen zu lassen, sodass man sich vom System abmelden und später die Arbeit exakt dort wieder aufnehmen kann. In diesem Tipp zeigt Michi Zaugg, wies geht.
Mit tmux (terminal multiplexer) ist es möglich, in einem Terminal mehrere Sessions bzw. Shells zu verwalten (à la screen) und diese auch im Hintergrund weiterlaufen zu lassen, sodass man sich vom System abmelden und später die Arbeit exakt dort wieder aufnehmen kann. In diesem Tipp, zeige ich euch, wies geht.
Wieso und warum überhaupt, da muss ich kurz ausholen. Ich möchte einen länger dauernden Prozess starten, möchte dazu aber nicht das Terminal offen halten müssen bzw. angemeldet bleiben. Später möchte ich natürlich das Resultat anschauen. Dieses Problem lässt sich relativ leicht mit nohup lösen. nohup (no hangup) hängt das gefolgte Kommando von meiner Session ab, d.h. es läuft auch weiter, wenn ich das Fenster bzw. meine Session schliesse. Das sieht dann etwa so aus:
|
Hier ist nun das gestartete sleep immer noch an meine Shell gebunden (PPID 10400). Da nohup sich von meiner Session abhängt, hat es auch nirgends mehr ein Terminal, wo das Kommando eine allfällige Ausgabe hineinschreiben könnte. Desshalb wird alles ins nohup.out gestellt. Dies befindet sich dort, wo ich nohup gestartet habe.
|
Wenn ich mich nun vom System ab- und wieder anmelde und erneut die Prozesstabelle anschaue, sehe ich, dass sleep nun wirklich von der ursprünglichen Shell entbunden wurde. Es sitzt nun direkt am Init (PPID 1).
Dies funktioniert alles soweit so gut, nur kann ich nicht mehr direkt interagieren. Der Prozess läuft zu Ende, und ich kann quasi nicht dort weiterfahren, wo ich aufgehört habe – ich habe ja nun eine neue Session. Mit einem Terminal-Multiplexer (tmux) kann ich in einem Terminal-Fenster mehrere Sessions verwalten, die auch offen bleiben, wenn ich das System verlasse, also mich abmelde.
tmux-Installation
Unter RedHat-Systemen kann tmux vom rpmforge Repository bezogen werden (CentOS Wiki). Nachdem das Repos hinzugefügt wurde, kann es mit
|
installiert werden.
Unter Debian-Systemen ist tmux bereit zur Installation:
|
tmux verwenden
Mit tmux wird eine neue Tmux-Session gestartet:
|
In der Leiste unten sieht man – falls vorhanden – die verschiedenen Fenster. Zudem hat man per Default den Hostnamen und das Datum auf der rechten Seite. Um tmux zu verlassen, gebe ich einfach exit oder logout ein. Sobald ich das letzte tmux-Fenster auf diese Weise schliesse, wird allerdings auch die Session geschlossen. Wenn ich nun, was ja der Witz an der Sache ist, tmux weiterlaufen lassen möchte, wird dies mit Ctrl-b-d; (d wie detach) gemacht. (Übrigens, die meisten Befehle aus Screen funktionieren auch in tmux, anstatt, dass Ctrl-a gefolgt von einem Buchstaben verwendet wird, benutzt man in tmux Ctrl-b).
Dies bedingt am Anfang eine gewisse Feinmotorik: Ctrl gedrückt halten, b drücken, Ctrl und b loslassen, c drücken.
Hier die wichtigesten Tastenkürzel:
- Neues Fenster aufmachen: Ctrl-b c (wie create)
- Zum nächsten Fenster wechseln: Ctr-b n (wie next)
- Zum vorherigen Fenster wechseln: Ctr-b p (wie previous)
- Tmux Session detachen: Ctrl-b d (wie dettach)
- Tmux Session wieder «holen»: $ tmux a
- Dem aktuellen Fenster einen (anderen) Namen geben: Ctrl-b ,
- Das aktuelle Fenster killen: Ctrl-b x
Session-Verwaltung
Selbstverständlich kann man tmux x-Mal laufen lassen. Denkbar ist es, verschiedene themenbasierte Sessions zu starten, z. B. «Server X», «Webadministration», «DNSAdmin», «Entwicklung». Mit
|
wird eine neue tmux-Session mit dem Titel «einname» gestartet. Wenn man dies nicht macht, wird von 0 weg durchnummeriert.
Die Session «einname» kann man dann nach dem Detachen wieder holen mit
|
Wenn ich nicht mehr weiss, wie ich die Session benannt habe bzw. sehen will, welche gerade laufen, kann ich mir dies mit
|
auflisten lassen.
Weitere Tipps zu tmux
Nett ist bei tmux, dass man ein eigenes Konfigfile erstellen kann unter ~/.tmux.conf. Dort können Tastenkombinationen erstellt, das Look&Feel angepasst oder auch Allgemeines wie der Scrollback-Buffer eingestellt werden (ach ja, übrigens, gescrollt wird in tmux mit Ctrl-b [, den Scroll-Modus verlässt man wieder mit ESC).
Beispiele für .tmux.conf
Historie verlängern:
|
Aussehen anpassen:
|
Status rechts anpassen:
|