Warum Programme stoppen, wenn SSH abbricht
Ein Programm, das Sie in einer SSH-Sitzung starten, hängt am Terminal dieser Sitzung. Endet die Verbindung, wird das Terminal geschlossen, und das Programm erhält normalerweise ein Hangup-Signal und stoppt. tmux hält stattdessen das Terminal auf dem Server, sodass die Verbindung kommen und gehen kann.
tmux muss auf dem Server laufen, nicht auf Ihrem Laptop. Installieren Sie es mit sudo apt install tmux oder sudo dnf install tmux.
Die wichtigsten Befehle
| Aufgabe | Befehl |
|---|---|
An Sitzung work anhängen oder sie anlegen | tmux new -A -s work |
| Lösen und weiterlaufen lassen | Ctrl+b, dann d |
| Sitzungen auflisten | tmux ls |
| An eine bestehende Sitzung anhängen | tmux attach -t work |
| Eine Sitzung im Hintergrund starten | tmux new -d -s work |
| Eine Sitzung beenden | tmux kill-session -t work |
| Alle Sitzungen beenden | tmux kill-server |
| Zurückscrollen | Ctrl+b, dann [, und q zum Verlassen |
Merken Sie sich tmux new -A -s work, denn es funktioniert, egal ob die Sitzung schon existiert. Sie können auch direkt von Ihrem eigenen Rechner dorthin gelangen:
ssh -t user@server tmux new -A -s work
Das -t ist nötig, weil tmux ein Terminal braucht.
Wie ein echter Verbindungsabbruch aussieht
Wir haben in tmux eine Schleife gestartet und dann den SSH-Client mit kill -9 beendet, um eine verlorene Verbindung nachzustellen. Bei einer neuen Anmeldung:
$ tmux ls
work: 1 windows (created Tue Nov 3 18:22:28 2026)
(attached) fehlt in der Zeile, weil kein Client verbunden ist, und die Schleife schrieb weiter in ihre Datei. Gibt es gar keine Sitzung, sagt tmux ls no server running on /tmp/tmux-1000/default. Das heißt, Ihre Sitzungen wurden beendet, zum Beispiel durch einen Neustart.
tmux überlebt keinen Neustart des Servers. Es endet auch beim Abmelden, wenn das System Benutzerprozesse beendet, mit KillUserProcesses=yes in logind.conf. Debian und Ubuntu liefern das ausgeschaltet aus. Stirbt Ihr tmux bei jeder Abmeldung, setzen Sie den Wert wieder auf no.
Ohne tmux: nohup
Für einen einzelnen Job, bei dem Sie nicht zu seinem Bildschirm zurückkehren müssen:
nohup ./job.sh > job.log 2>&1 &
In unserem Test haben wir drei Jobs in einer Sitzung gestartet und die Verbindung geschlossen. Der nohup-Job lief zu Ende und schrieb sein Log. Der einfache Hintergrundjob mit & und der Vordergrundjob starben beide.
Haben Sie einen Job mit & gestartet und nohup vergessen, schützt ihn dieses Bash-Builtin vor dem Hangup-Signal:
disown -h %1
Seine Ausgabe geht weiterhin an das alte Terminal, ein Job, der viel auf den Bildschirm schreibt, kann also nach Ihrem Weggang scheitern. Bei beiden Methoden können Sie später nicht mehr mit dem Job interagieren.
Mit systemd: systemd-run
Mit sudo können Sie den Job als temporären Dienst ausführen. Er ist dann vollständig von Ihrer Anmeldung getrennt, und systemd behält seine Ausgabe:
sudo systemd-run --unit=longjob /usr/local/bin/job.sh
systemctl status longjob
journalctl -u longjob -f
Er läuft als root, wenn Sie nicht --uid=user angeben, und startet in /, wenn Sie nicht mit --working-directory= einen Ordner setzen, verwenden Sie also vollständige Pfade.
Endet der Job erfolgreich, verschwindet die Unit: In unserem Test sagte systemctl status longjob danach Unit longjob.service could not be found, aber journalctl -u longjob enthielt die Ausgabe noch. Ein fehlgeschlagener Job bleibt in der Liste, bis Sie sudo systemctl reset-failed longjob ausführen.
Welche Methode wofür
- tmux für interaktive Arbeit: Editoren, Datenbank-Shells, alles, wohin Sie zurückkehren möchten.
- nohup für einen Job auf einem Server, auf dem Sie nichts installieren können.
- systemd-run für einen langen Job, der protokolliert und von Ihrer Anmeldung getrennt sein soll.
Bricht die Verbindung selbst ständig ab, lesen Sie Broken pipe und Keep-alive. tmux hält Ihre Arbeit sicher, und Keep-alive-Einstellungen machen die Abbrüche seltener. In einem Netz, das oft wechselt, hält Mosh mit tmux auf dem Server sowohl die Verbindung als auch die Arbeit am Leben.
Fragen
Wie verbinde ich mich nach einem SSH-Abbruch wieder mit tmux?
Melden Sie sich erneut an und führen Sie tmux attach -t work aus, oder tmux new -A -s work, das die Sitzung auch neu anlegt, falls sie fehlt. tmux ls listet die Sitzungen, die noch bestehen.
Übersteht tmux einen Neustart des Servers?
Nein. tmux ist ein gewöhnlicher Prozess auf dem Server, ein Neustart beendet also alle Sitzungen. Für Arbeit, die nach einem Neustart wieder anlaufen soll, nutzen Sie einen systemd-Dienst.
Warum verschwindet meine tmux-Sitzung beim Abmelden?
Vermutlich beendet das System Benutzerprozesse beim Abmelden, mit KillUserProcesses=yes in /etc/systemd/logind.conf. Setzen Sie den Wert auf no und starten Sie danach systemd-logind oder den Server neu.
Wie läuft ein Befehl nach dem Schließen von SSH ohne tmux weiter?
Starten Sie ihn mit nohup ./job.sh > job.log 2>&1 &. Er läuft nach dem Abmelden weiter und schreibt seine Ausgabe in job.log, aber zu seinem Bildschirm kommen Sie nicht zurück.
Brauche ich tmux auf meinem eigenen Rechner?
Nein. tmux muss auf dem Server laufen. Ihr Rechner braucht nur einen SSH-Client.