Wenn eine SSH-Verbindung unterbrochen wird (der Laptop geht in den Ruhezustand, das WLAN stockt oder das Terminal wird geschlossen), werden auch die über diese Verbindung ausgeführten Befehle angehalten. Ein unterbrochenes System-Update, ein Datenbankimport oder das Kopieren großer Dateien kann jedoch zu Unannehmlichkeiten führen und den Server in einem möglicherweise fehlerhaften Zustand zurücklassen.
Die Lösung ist ein Terminal-Multiplexer wie beispielsweise „tmux“ oder „screen“. Diese Programme führen auf dem Server eine Sitzung aus, die auch nach dem Trennen der Verbindung bestehen bleibt und mit der Sie sich später (auch von einem anderen Rechner aus) wieder verbinden können.
tmux
Installation
# AlmaLinux, Rocky Linux
sudo dnf install tmux
# Ubuntu, Debian
sudo apt install tmux
Verwendung
# Új, elnevezett munkamenet indítása
tmux new -s frissites
In der sich öffnenden Sitzung können Sie genauso arbeiten wie in einem normalen Terminal. Starten Sie den lang andauernden Vorgang und gehen Sie anschließend wie folgt vor:
- Abmelden (die Sitzung läuft im Hintergrund weiter): Drücken Sie die Tastenkombination „
Ctrl+b“, lassen Sie die Tasten los und drücken Sie anschließend die Taste „d“. - Anschließend können Sie sich problemlos aus SSH abmelden. Sollte die Verbindung unerwartet unterbrochen werden, wird die Sitzung auf dieselbe Weise beendet.
Wiederverbindung, auch über eine neue SSH-Verbindung:
# A futó munkamenetek listája
tmux ls
# Csatlakozás egy munkamenethez
tmux attach -t frissites
Die Sitzung endet, wenn Sie sie mit dem Befehl „exit“ verlassen oder von außen beenden:
tmux kill-session -t frissites
Nützliche Tastenkombinationen
Jeder tmux-Befehl beginnt mit dem Präfix „Ctrl+b“:
| Taste | Vorgang |
|---|---|
Ctrl+b d |
Abmeldung von der Sitzung |
Ctrl+b c |
Neues Fenster innerhalb der Sitzung |
Ctrl+b n / p |
Nächstes / Vorheriges Fenster |
Ctrl+b % |
Aufteilung des Fensters in zwei nebeneinander liegende Bereiche |
Ctrl+b " |
Aufteilung des Fensters in zwei untereinander angeordnete Bereiche |
Ctrl+b, Pfeiltasten |
Wechsel zwischen den einzelnen Abschnitten |
Ctrl+b [ |
Scrollen in der Ausgabe (Beenden: q) |
Bildschirm
„screen“ ist das ältere, aber vielerorts noch verwendete Pendant zu „tmux“. Ab AlmaLinux und Rocky Linux 8 ist es im EPEL-Repository verfügbar (auf AlmaLinux 10 wurde im Test die Version 5.0.1 verwendet; siehe: Installation des EPEL-Repositorys unter AlmaLinux). Auf den Testrechnern waren auf dem Ubuntu 24.04-Cloud-Image sowohl tmux als auch screen bereits vorinstalliert, auf Debian 12 war screen vorinstalliert, auf AlmaLinux 10 hingegen keines von beiden:
# AlmaLinux, Rocky Linux
sudo dnf install epel-release
sudo dnf install screen
# Ubuntu, Debian
sudo apt install screen
# Új, elnevezett munkamenet
screen -S frissites
# Leválás: Ctrl+a, majd d
# A futó munkamenetek listája
screen -ls
# Visszacsatlakozás
screen -r frissites
Wenn laut „screen -r“ die Sitzung noch verbunden ist („Attached“), weil die alte Verbindung nicht ordnungsgemäß beendet wurde, können Sie sie mit dem Befehl „screen -d -r frissites“ trennen und übernehmen.
nohup: Ein einzelner Befehl im Hintergrund
Wenn Sie die Ausgabe des Befehls nicht sehen müssen und lediglich möchten, dass dieser auch nach dem Trennen der Verbindung weiterläuft, reicht „nohup“ aus:
nohup ./mentes.sh > mentes.log 2>&1 &
Der Befehl läuft im Hintergrund, die Ausgabe wird in die Datei „mentes.log“ geschrieben, die Sie mit dem Befehl „tail -f mentes.log“ verfolgen können. Für interaktive Befehle (die Fragen stellen, wie beispielsweise ein Update) ist „nohup“ nicht geeignet; verwenden Sie hierfür bitte „tmux“ oder „screen“.
Wann wird dies verwendet?
Wir empfehlen Ihnen, alle Vorgänge, die länger als einige Minuten dauern oder deren Unterbrechung Probleme verursachen würde, in einer tmux- oder screen-Sitzung zu starten:
- Systemaktualisierung, insbesondere der Wechsel zu einer neuen Hauptversion (siehe: Systemaktualisierung mit dnf und apt),
- Import oder Export großer Datenbanken,
- Kopieren von Dateien zwischen Servern (siehe: Kopieren von Dateien zwischen Servern: scp, rsync und sftp),
- Erstellen oder Wiederherstellen einer Sicherung.