tmux ist ein Terminal-Multiplexer, der mehrere Terminals in einer Session verwaltet. Sessions überleben getrennte Verbindungen - ideal für Server-Administration über SSH.
Vorteile
| Feature | Beschreibung | |---------|--------------| | Persistente Sessions | Überleben SSH-Disconnects | | Mehrere Fenster | Tabs in einem Terminal | | Panes | Geteilte Ansichten | | Kopieren/Einfügen | Eigene Zwischenablage | | Scripting | Automatisierte Layouts |
Installation
# Debian/Ubuntu
apt install tmux
# CentOS/RHEL
dnf install tmuxGrundbegriffe
tmux Server
└── Session "dev"
├── Window 0 "editor"
│ ├── Pane 0 (vim)
│ └── Pane 1 (logs)
│
└── Window 1 "shell"
└── Pane 0 (bash)Sessions
Session starten
# Neue Session
tmux
# Mit Namen
tmux new -s dev
# Benanntes Fenster
tmux new -s dev -n editorSession verwalten
# Sessions auflisten
tmux ls
tmux list-sessions
# An Session anhängen
tmux attach
tmux attach -t dev
tmux a -t dev
# Session trennen (innerhalb tmux)
# Prefix + d
# Session beenden
tmux kill-session -t dev
# Alle Sessions beenden
tmux kill-serverPrefix-Taste
Standard-Prefix: Ctrl + b
Alle tmux-Befehle: Prefix + Taste
Beispiel: Prefix + d = Ctrl+b, dann dFenster (Windows)
| Tastenkombination | Aktion | |-------------------|--------| | Prefix + c | Neues Fenster | | Prefix + n | Nächstes Fenster | | Prefix + p | Vorheriges Fenster | | Prefix + 0-9 | Zu Fenster N wechseln | | Prefix + w | Fenster-Liste | | Prefix + , | Fenster umbenennen | | Prefix + & | Fenster schließen |
Panes (Geteilte Ansichten)
| Tastenkombination | Aktion | |-------------------|--------| | Prefix + % | Vertikal teilen | | Prefix + " | Horizontal teilen | | Prefix + Pfeiltasten | Zwischen Panes wechseln | | Prefix + o | Nächster Pane | | Prefix + ; | Letzter Pane | | Prefix + x | Pane schließen | | Prefix + z | Pane maximieren/minimieren | | Prefix + { | Pane nach links | | Prefix + } | Pane nach rechts | | Prefix + Space | Layout wechseln |
Pane-Größe anpassen
Prefix + Ctrl + Pfeiltaste = Größe ändernKonfiguration
~/.tmux.conf
# Prefix auf Ctrl+a ändern
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# Maus-Unterstützung
set -g mouse on
# 256 Farben
set -g default-terminal "screen-256color"
# Start bei 1 statt 0
set -g base-index 1
setw -g pane-base-index 1
# History-Limit
set -g history-limit 50000
# Schnellere Reaktion
set -sg escape-time 0
# Fenster automatisch umbenennen
setw -g automatic-rename on
# Status-Leiste
set -g status-style bg=colour234,fg=colour137
set -g status-left '#[fg=colour233,bg=colour245,bold] #S '
set -g status-right '#[fg=colour233,bg=colour245,bold] %H:%M '
# Aktives Fenster hervorheben
setw -g window-status-current-style fg=colour81,bg=colour238,bold
# Pane-Rahmen
set -g pane-border-style fg=colour238
set -g pane-active-border-style fg=colour81
# Split mit | und -
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
# Vim-artige Navigation
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# Pane-Größe mit Vim-Tasten
bind -r H resize-pane -L 5
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r L resize-pane -R 5
# Schnelles Neuladen
bind r source-file ~/.tmux.conf \; display "Config reloaded!"
# Kopier-Modus wie Vim
setw -g mode-keys vi
bind -T copy-mode-vi v send -X begin-selection
bind -T copy-mode-vi y send -X copy-selection-and-cancelConfig neu laden
# Innerhalb tmux
Prefix + : source-file ~/.tmux.conf
# Oder Shortcut (wenn konfiguriert)
Prefix + rKopier-Modus
Kopieren
1. Prefix + [ = Kopier-Modus starten
2. Navigation mit Pfeiltasten oder hjkl
3. Space = Selektion starten
4. Enter = Kopieren und beenden
5. Prefix + ] = EinfügenMit Maus (wenn aktiviert)
- Markieren mit Maus
- Rechtsklick zum Einfügen
- Oder: Shift gedrückt halten für normales Terminal-VerhaltenScripting
Session mit Layout starten
#!/bin/bash
# dev-session.sh
SESSION="dev"
# Session erstellen
tmux new-session -d -s $SESSION -n editor
# Fenster teilen
tmux split-window -h -t $SESSION:editor
tmux split-window -v -t $SESSION:editor.1
# Befehle ausführen
tmux send-keys -t $SESSION:editor.0 'vim .' C-m
tmux send-keys -t $SESSION:editor.1 'htop' C-m
tmux send-keys -t $SESSION:editor.2 'tail -f /var/log/syslog' C-m
# Zweites Fenster
tmux new-window -t $SESSION -n shell
# An Session anhängen
tmux attach -t $SESSIONtmuxinator (Advanced)
# Installation
gem install tmuxinator
# Projekt erstellen
tmuxinator new dev# ~/.tmuxinator/dev.yml
name: dev
root: ~/projects/myapp
windows:
- editor:
layout: main-vertical
panes:
- vim
- guard
- server:
panes:
- rails server
- logs:
panes:
- tail -f log/development.log# Session starten
tmuxinator start devSynchronisierte Panes
# Alle Panes gleichzeitig eingeben
Prefix + : setw synchronize-panes on
# Ausschalten
Prefix + : setw synchronize-panes offNützlich für mehrere Server gleichzeitig:
# Session mit mehreren SSH-Verbindungen
tmux new-session -d -s multi
tmux split-window -h
tmux split-window -v
tmux select-pane -t 0
tmux split-window -v
# In jedem Pane: ssh server1, server2, etc.
# Dann: synchronize-panes onNützliche Befehle
Innerhalb tmux (Prefix + :)
:new-session -s name # Neue Session
:kill-session -t name # Session beenden
:rename-window name # Fenster umbenennen
:swap-window -t 0 # Fenster tauschen
:move-window -t session: # Fenster in andere Session
:join-pane -t session:window # Pane verschieben
:break-pane # Pane zu eigenem FensterInformationen
# Alle Tastenbelegungen
tmux list-keys
# Alle Optionen
tmux show-options -g
# Server-Info
tmux infoSSH und tmux
Automatisch tmux starten
# In ~/.bashrc auf dem Server
if [ -z "$TMUX" ]; then
tmux attach -t default || tmux new -s default
fiSession teilen
# User 1: Session erstellen
tmux new -s shared
# User 2: An gleiche Session
tmux attach -t shared
# Read-only
tmux attach -t shared -rZusammenfassung
| Befehl | Funktion | |--------|----------| | tmux | Session starten | | tmux new -s name | Benannte Session | | tmux ls | Sessions auflisten | | tmux a -t name | Anhängen | | tmux kill-session -t name | Session beenden |
| Tastenkombination | Aktion | |-------------------|--------| | Prefix + d | Session trennen | | Prefix + c | Neues Fenster | | Prefix + % | Vertikal teilen | | Prefix + " | Horizontal teilen | | Prefix + z | Pane maximieren | | Prefix + [ | Kopier-Modus |
| Datei | Funktion | |-------|----------| | ~/.tmux.conf | Konfiguration | | ~/.tmuxinator/ | tmuxinator Projekte |
Fazit
tmux ist unverzichtbar für Server-Administration. Persistente Sessions verhindern Arbeitsverlust bei SSH-Disconnects. Die Fenster- und Pane-Verwaltung erhöht die Produktivität erheblich. Mit einer guten Konfiguration wird tmux noch effizienter. Scripting ermöglicht automatisierte Arbeitsumgebungen. Für jeden Systemadministrator gehört tmux zur Grundausstattung.