screen und tmux sind Terminal-Multiplexer. Sie ermöglichen es, Prozesse am Laufen zu halten, auch wenn Sie die SSH-Verbindung trennen.

Warum Terminal-Multiplexer?

Ohne screen/tmux:

  • SSH-Verbindung bricht ab → Prozess stoppt
  • Lange Aufgaben (Backup, Kompilieren) müssen neu gestartet werden

Mit screen/tmux:

  • Prozesse laufen im Hintergrund weiter
  • Session kann jederzeit wieder verbunden werden
  • Mehrere Terminals in einer SSH-Verbindung

screen

screen ist der Klassiker, auf fast jedem System verfügbar.

Installation

apt install screen    # Debian/Ubuntu
dnf install screen    # CentOS/AlmaLinux

Neue Session starten

screen

Mit Namen (empfohlen):

screen -S backup

Befehle in screen

Alle Befehle beginnen mit Ctrl+a:

| Tastenkombination | Aktion | |-------------------|--------| | Ctrl+a d | Session trennen (detach) | | Ctrl+a c | Neues Fenster | | Ctrl+a n | Nächstes Fenster | | Ctrl+a p | Vorheriges Fenster | | Ctrl+a " | Fenster-Liste | | Ctrl+a A | Fenster umbenennen | | Ctrl+a k | Fenster beenden (kill) | | Ctrl+a ? | Hilfe |

Session trennen

Ctrl+a d

Oder von außen:

screen -d session-name

Sessions auflisten

screen -ls

Ausgabe:

There are screens on:
    12345.backup    (Detached)
    12346.webserver (Attached)

Session wieder verbinden

screen -r backup

Wenn nur eine Session:

screen -r

Session beenden

In der Session:

exit

Oder:

screen -X -S backup quit

Praktisches Beispiel

# Neue Session für Backup
screen -S backup

# Backup starten
rsync -avz /var/www/ backup-server:/backup/

# Session trennen (Ctrl+a d)
# SSH-Verbindung kann beendet werden

# Später wieder verbinden
screen -r backup

tmux

tmux ist moderner und flexibler als screen.

Installation

apt install tmux    # Debian/Ubuntu
dnf install tmux    # CentOS/AlmaLinux

Neue Session starten

tmux

Mit Namen:

tmux new -s backup

Befehle in tmux

Alle Befehle beginnen mit Ctrl+b:

| Tastenkombination | Aktion | |-------------------|--------| | Ctrl+b d | Session trennen | | Ctrl+b c | Neues Fenster | | Ctrl+b n | Nächstes Fenster | | Ctrl+b p | Vorheriges Fenster | | Ctrl+b w | Fenster-Liste | | Ctrl+b , | Fenster umbenennen | | Ctrl+b & | Fenster beenden | | Ctrl+b ? | Hilfe |

Panes (Fenster teilen)

tmux kann das Terminal teilen:

| Tastenkombination | Aktion | |-------------------|--------| | Ctrl+b % | Vertikal teilen | | Ctrl+b " | Horizontal teilen | | Ctrl+b Pfeiltasten | Zwischen Panes wechseln | | Ctrl+b x | Aktuelles Pane schließen | | Ctrl+b z | Pane maximieren/minimieren | | Ctrl+b Ctrl+Pfeiltasten | Pane-Größe ändern |

Sessions verwalten

# Sessions auflisten
tmux ls

# Session verbinden
tmux attach -t backup
tmux a -t backup

# Session beenden
tmux kill-session -t backup

Scrollen in tmux

Ctrl+b [ aktiviert den Scroll-Modus. Mit Pfeiltasten oder Page Up/Down scrollen. q zum Beenden.

screen vs. tmux

| Aspekt | screen | tmux | |--------|--------|------| | Verfügbarkeit | Überall | Meist installiert | | Konfiguration | ~/.screenrc | ~/.tmux.conf | | Prefix | Ctrl+a | Ctrl+b | | Panes | Möglich | Besser | | Scripting | Einfach | Mächtig | | Status-Leiste | Optional | Standard |

tmux-Konfiguration

Erstellen Sie ~/.tmux.conf:

# Prefix auf Ctrl+a ändern (wie screen)
unbind C-b
set -g prefix C-a
bind C-a send-prefix

# Mausunterstützung
set -g mouse on

# Fenster bei 1 starten
set -g base-index 1
setw -g pane-base-index 1

# Bessere Farben
set -g default-terminal "screen-256color"

# Status-Leiste
set -g status-style bg=black,fg=white
set -g status-left '#[fg=green]#S '
set -g status-right '#[fg=yellow]%H:%M'

# Schnelleres Escape
set -sg escape-time 0

# History-Größe
set -g history-limit 10000

# Einfacheres Teilen
bind | split-window -h
bind - split-window -v

Nach Änderungen neu laden:

tmux source-file ~/.tmux.conf

Praktische Anwendungen

Lange Aufgaben

# Session starten
tmux new -s upgrade

# System-Update
apt update && apt upgrade -y

# Trennen (Ctrl+b d)
# Später prüfen
tmux a -t upgrade

Mehrere Dienste überwachen

tmux new -s monitoring

# Fenster teilen
Ctrl+b %    # Vertikal
Ctrl+b "    # Horizontal

# In jedem Pane einen Befehl:
# Pane 1: htop
# Pane 2: tail -f /var/log/syslog
# Pane 3: tail -f /var/log/nginx/access.log

Entwicklungsumgebung

tmux new -s dev

# Fenster 1: Editor
vim projekt/

# Neues Fenster (Ctrl+b c)
# Fenster 2: Git
git status

# Neues Fenster
# Fenster 3: Server
npm run dev

Team-Arbeit (Pair Programming)

Beide verbinden sich zur selben Session:

# Person 1 erstellt
tmux new -s shared

# Person 2 verbindet
tmux attach -t shared

Beide sehen und können tippen.

Tipps

Automatisch starten

In .bashrc:

# Automatisch tmux bei SSH-Login
if [ -z "$TMUX" ] && [ -n "$SSH_CONNECTION" ]; then
    tmux attach -t main || tmux new -s main
fi

Session-Wiederherstellung

Mit tmux-resurrect Plugin können Sessions nach Neustart wiederhergestellt werden.

Kopieren in tmux

1. Ctrl+b [ - Copy-Modus 2. Leertaste - Markierung starten 3. Pfeiltasten - Text auswählen 4. Enter - Kopieren 5. Ctrl+b ] - Einfügen

Häufige Probleme

"no sessions" Fehler

# Session existiert nicht
tmux ls    # Prüfen welche Sessions existieren

Verbindung zur falschen Session

# Spezifisch verbinden
tmux attach -t sessionname

Scroll funktioniert nicht

In tmux: Ctrl+b [ für Scroll-Modus.

Fazit

Terminal-Multiplexer sind unverzichtbar für die Server-Administration. tmux ist moderner und flexibler, screen ist überall verfügbar. Nutzen Sie benannte Sessions für bessere Organisation.