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

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

| 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.