tmux ist ein Terminal-Multiplexer, der mehrere Terminals in einer Session verwaltet. Sessions überleben getrennte Verbindungen - ideal für Server-Administration über SSH.

Vorteile

FeatureBeschreibung
Persistente SessionsÜberleben SSH-Disconnects
Mehrere FensterTabs in einem Terminal
PanesGeteilte Ansichten
Kopieren/EinfügenEigene Zwischenablage
ScriptingAutomatisierte 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)

TastenkombinationAktion
Prefix + cNeues Fenster
Prefix + nNächstes Fenster
Prefix + pVorheriges Fenster
Prefix + 0-9Zu Fenster N wechseln
Prefix + wFenster-Liste
Prefix + ,Fenster umbenennen
Prefix + &Fenster schließen

Panes (Geteilte Ansichten)

TastenkombinationAktion
Prefix + %Vertikal teilen
Prefix + "Horizontal teilen
Prefix + PfeiltastenZwischen Panes wechseln
Prefix + oNächster Pane
Prefix + ;Letzter Pane
Prefix + xPane schließen
Prefix + zPane maximieren/minimieren
Prefix + {Pane nach links
Prefix + }Pane nach rechts
Prefix + SpaceLayout 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

Informationen

# 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

BefehlFunktion
tmuxSession starten
tmux new -s nameBenannte Session
tmux lsSessions auflisten
tmux a -t nameAnhängen
tmux kill-session -t nameSession beenden
TastenkombinationAktion
Prefix + dSession trennen
Prefix + cNeues Fenster
Prefix + %Vertikal teilen
Prefix + "Horizontal teilen
Prefix + zPane maximieren
Prefix + [Kopier-Modus
DateiFunktion
~/.tmux.confKonfiguration
~/.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.