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 tmux
Grundbegriffe
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 editor
Session 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-server
Prefix-Taste
Standard-Prefix: Ctrl + b
Alle tmux-Befehle: Prefix + Taste
Beispiel: Prefix + d = Ctrl+b, dann d
Fenster (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 ändern
Konfiguration
~/.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-cancel
Config neu laden
# Innerhalb tmux
Prefix + : source-file ~/.tmux.conf
# Oder Shortcut (wenn konfiguriert)
Prefix + r
Kopier-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ügen
Mit Maus (wenn aktiviert)
- Markieren mit Maus
- Rechtsklick zum Einfügen
- Oder: Shift gedrückt halten für normales Terminal-Verhalten
Scripting
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 $SESSION
tmuxinator (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 dev
Synchronisierte Panes
# Alle Panes gleichzeitig eingeben
Prefix + : setw synchronize-panes on
# Ausschalten
Prefix + : setw synchronize-panes off
Nü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 on
Nü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 Fenster
# Alle Tastenbelegungen
tmux list-keys
# Alle Optionen
tmux show-options -g
# Server-Info
tmux info
SSH und tmux
Automatisch tmux starten
# In ~/.bashrc auf dem Server
if [ -z "$TMUX" ]; then
tmux attach -t default || tmux new -s default
fi
Session teilen
# User 1: Session erstellen
tmux new -s shared
# User 2: An gleiche Session
tmux attach -t shared
# Read-only
tmux attach -t shared -r
Zusammenfassung
| 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.