##Bitte hier den eigenen Benutzernamen und das geplante Fertigstellungsdatum eintragen [[Vorlage(Baustelle, 28.02.2010, uname)]] [[Vorlage(Getestet, Lucid)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] }}} [[Inhaltsverzeichnis(2)]] [http://tmux.sourceforge.net/ tmux] {en} 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] {{{#!vorlage Paketinstallation tmux }}} installiert werden. Mit dem Befehl {{{#!vorlage 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: [[Vorlage(Tasten, Strg+B+C)]] Und um zwischen den einzelnen Sitzungen umzuschalten: [[Vorlage(Tasten, Strg+B+n)]] Eine Übersicht über alle Tastenkürzel bekommt man mit [[Vorlage(Tasten, Strg+B)]], gefolgt von [[Vorlage(Tasten, ?)]]. Eine Sitzung beendet man einfach, indem man die dort laufende Shell beendet, also entweder mit dem Befehl `exit` oder durch Drücken von [[Vorlage(Tasten, 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 = * [http://tmux.sourceforge.net/ tmux] {en} = Vorschlag zum weiteren Aus-/Rückbau = [http://tmux.sourceforge.net/ tmux] {en} ist ein sog. Terminal-Multiplexer (vergleichbar mit [:Screen: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 {{{#!vorlage Paketinstallation tmux }}} installiert[1] werden. = Bedienung = `tmux` wird über ein normales Terminal[2] gestartet: {{{#!vorlage Befehl 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 [:man:Manpage] sehr gut beschrieben sind. Für den normalen Start einer neuen `tmux`-Sitzung reicht der Aufruf {{{#!vorlage Befehl tmux }}} aus, siehe dazu auch die [#Beispiele Beispiele]. = Kurztasten = `tmux` kann fast ausschließlich über Kurztasten (Shortcuts) bedient werden. Die Kommandosequenz wird standardmäßig mit [[Vorlage (Tasten Strg+B)]] eingeleitet und die folgende Eingabe wird als weiteres Kürzel interpretiert. {{{#!vorlage Tabelle <-2 tablestyle="width: 90%;" rowclass="titel"> Einige ausgewählte Tastaturkürzel (Shortcuts) +++ Tastaturkürzel Bedeutung +++ [[Vorlage (Tasten Strg+B)]] Senden des Kurztasten-prefix +++ [[Vorlage (Tasten Strg+B)]] '''?''' Anzeige aller aktiven Shortcuts (keybindings). +++ [[Vorlage (Tasten Strg+B)]] '''d''' (detach) Ausklinken/aushängen der akt. Sitzung (Client) und in den Hintergund verschieben, +++ [[Vorlage (Tasten Strg+B)]] '''s''' (switch) Wechseln zwischen verschiedenen Sitzungen (Client). +++ [[Vorlage (Tasten Strg+B)]] '''c''' (create) Erzeugen eines neuen Fensters (Shell), +++ [[Vorlage (Tasten Strg+B)]] '''&''' Beenden der aktuellen Fensters, muss mit `y` bestätigt werden. +++ [[Vorlage (Tasten Strg+B)]] ''',''' Umbenennen des aktuellen Fenstertitels +++ [[Vorlage (Tasten Strg+B)]] '''l''' (last) Wechseln zum letzten aktiven Fenster (ist durch - markiert) +++ [[Vorlage (Tasten Strg+B)]] '''p''' (previouse) Wechsel zum vorherigen Fenster (z.B. von 3 nach 2). +++ [[Vorlage (Tasten Strg+B)]] '''n''' (next) Wechsel zum nächsten Fenster. +++ [[Vorlage (Tasten Strg+B)]] `nr.` Wechsel zur Fenster-Nr., nr.=der numerische Bezeichner des Fensters (0,1 ...) +++ [[Vorlage (Tasten Strg+B)]] '''w''' (window-list) Anzeige der Liste aller Fenster, mit Pfeiltasten auswählbar. +++ [[Vorlage (Tasten Strg+B)]] '''f''' `sbg` (find) Suchen nach einem definierten `sbg` (Suchstring), z.B. Fenstername, und aktivieren des Fensters. +++ <-2:rowclass="kopf"> Steuern der Fensterteile (panes). tmux kennt 5 voreingestellte Fensterlayouts (M-1 bis M-5). +++ [[Vorlage (Tasten Strg+B)]] [[Vorlage (Tasten Space)]] Umschalten zwischen den verschiedenen Fensterlayouts (M-1 bis M-5). +++ [[Vorlage (Tasten Strg+B)]] '''%''' Fenster horizontal in 2 Teile splitten. +++ [[Vorlage (Tasten Strg+B)]] '''"''' Fenster vertikal in 2 Teile splitten. +++ [[Vorlage (Tasten Strg+B)]] '''o''' (other) Wechseln zum nächsten Fensterteil (Pfeiltasten sind möglich). +++ [[Vorlage (Tasten Strg+B)]] '''q''' (quote) Einbelnden einer Nummernanzeige im Fensterteil (pane numbers). +++ [[Vorlage (Tasten Strg+B)]] '''{''' Fensterteil nach links verschieben. +++ [[Vorlage (Tasten Strg+B)]] '''}''' Fensterteil nach rechts verschieben. +++ [[Vorlage (Tasten Strg+B)]] '''!''' Herauslösen des aktven Fensterteils als eigenständiges Fenster. +++ [[Vorlage (Tasten Strg+B)]] `x` Beenden der aktuellen Fensterteils, muss mit `y` bestätigt werden. +++ <-2:rowstyle="background-color: #F9EAAF;" :> Um den Kopiermodus zwischen den Fenstern/Fensterteilen zu nutzen siehe die [:man:Manpage] und Beispiele unter den [#Links Links]. }}} = Beispiele = Starten von `tmux` in einer neuen Sitzung. {{{#!vorlage Befehl tmux }}} Starten von `tmux` und wiederaufnehmen einer laufenden Sitzung. {{{#!vorlage Befehl tmux attach }}} Starten von `tmux` mit einer Auwahlliste aller laufenden Sitzungen {{{#!vorlage Befehl 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. {{{#!vorlage Befehl tmux new-session -s "HOST1" \; neww -n "Prozesse" 'htop' }}} Öffen eines neuen Fensters durch [[Vorlage (Tasten Strg+B)]] '''c''' oder mit: {{{#!vorlage Befehl tmux neww }}} Öffnen eines neuen Fensters und starten von `htop` ohne das Fenster zu aktivieren {{{#!vorlage Befehl tmux neww -d htop }}} Öffnen des neuen Fensters '''1''' und starten des Programms `top` . {{{#!vorlage Befehl 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. {{{#!vorlage Befehl 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 [[Vorlage (Tasten Strg+a)]], analog [:Screen: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 }}} == noch eine conf == ungeprüft und 1:1 aus dem Netz übernommen {{{ # Tastenkombination in STRG-A ändern unbind C-b set -g prefix C-a # Copy mode unbind [ bind Escape copy-mode # Use Vi mode setw -g mode-keys vi # Make mouse useful in copy mode setw -g mode-mouse on # Bessere Tastenkombinationen fuer's Teilen von Fenstern unbind % bind | split-window -h bind h split-window -h unbind '"' bind - split-window -v bind v split-window -v # History auf 1000 setzen set -g history-limit 1000 # Status Bar anpassen set -g status-bg black set -g status-fg white set -g status-interval 1 set -g status-left '#[fg=green]#H#[default]‘ set -g status-right ‘#[fg=yellow]#(cut -d ” ” -f 1-4 /proc/loadavg)#[default] #[fg=cyan,bold]%Y-%m-%d %H:%M:%S#[default]‘ # Falls es Aktivitaeten in anderen Tabs/Fenstern gibt, zeige einen Hinweis auf der Status Bar an setw -g monitor-activity on set -g visual-activity on # Aktuelles Fenster in der Statusbar hervorheben setw -g window-status-current-bg red }}} == 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. {{{#!#!vorlage Befehl if [ -z "$TMUX" ] && [ $TERM != "screen" ]; then tmux attach -d [ $? -eq 0 ] && exit echo "WARNING: tmux exited with an error!" >&2 fi }}} = Links = * [http://tmux.sourceforge.net/ tmux]{en} bei sourceforge.net * [http://strcat.de/eigenes/tmux.html private Anweisung]{de} von Christian Schneider * [http://strcat.de/blog/archives/1541-Good-by-GNU-Screen,-welcome-tmux.html Gegenüberstellung]{de} screen/tmux von Christian Schneider * [http://linuxwiki.de/tmux linuxwiki.de]{de} Mit Beispielskipte * [http://www.openbsd.org/faq/faq7.html#tmux openbsd.org]{en} bei Openbsd * [https://wiki.archlinux.org/index.php/Tmux archlinux.org]{en} incl. einer tmux.conf * [http://www.jeffstory.org/wordpress/?p=132 jeffstory.org]{en} Einführung mit vielen Screenshots ---- # tag: Shell, Fenstermanager, Prozesse