nohup
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Hinweis:
Dieser Artikel beschreibt die alte Implementation des Programms. Ab Ubuntu 24.04 ist auch mit Paket rust-coreutils 🇬🇧 eine neue Implementierung in der Programmiersprache Rust für Ubuntu verfügbar, und ab Ubuntu Version 25.10 wird die Implementierung in Rust als Standard bevorzugt.
Die Implementierung in Rust strebt Funktionsgleichheit mit der alten Implementierung an. Es können aber kleine Abweichungen auftreten. Dies bedeutet, dass das hier Beschriebene von der am eigenen Rechner vorgefundenen Situation abweichen kann.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
nohup ist ein Befehl, um ein Programm auszuführen, wobei dieses dann das HUP-Signal unterdrückt. Dadurch kann man ein Programm starten und weiter laufen lassen, auch wenn man sich vom System abgemeldet hat.
Üblicherweise nutzt man nohup, um Dienste im Hintergrund zu starten und diese so von der Login-Shell zu trennen. Ausgaben des aufgerufenen Programms werden automatisch in die Datei nohup.out geleitet, die im Verzeichnis angelegt wird, von dem aus der Befehl ausgeführt wurde. Um zu verhindern, dass das Programm nicht weiterläuft, weil es auf Eingaben wartet, ist es außerdem manchmal notwendig, auch die Standard-Eingabe etwa mit >/dev/null umzulenken.
Installation¶
Bis Ubuntu 25.04 ist das Programm im essentiellen Paket coreutils enthalten und deshalb auf jedem System installiert. Diese Variante beruht auf den altbekannten GNU Core Utilities.
Ab 25.10 ist das Paket coreutils 🇬🇧 jedoch ein Metapaket, welches alternativ durch gnu-coreutils 🇬🇧 oder rust-coreutils 🇬🇧 oder weitere befriedigt werden kann.
Bei 25.10 und 26.04 installiert das Paket coreutils-from-uutils 🇬🇧 beide vorstehend genannten Pakete und aktiviert die rust-coreutils als Vorgabe. Siehe Artikel rust-coreutils zur Umstellung auf die GNU-Utilities.
Ab 26.10 soll aber coreutils-from-uutils nur noch die rust-coreutils installieren. Wer dann die alten gnu-coreutils verwenden will, muss coreutils-from-gnu 🇬🇧 manuell installieren.
Aufruf¶
nohup PFAD/ZUM/PROGRAMM
Anwendungsbeispiel¶
Startet man gedit aus einem Terminalfenster mit dem Befehl
gedit &
, so startet gedit, und man kann in der Konsole weiterarbeiten. Beendet man allerdings das Terminalfenster, so wird auch gedit kommentarlos geschlossen, weil man die Instanz beendet, die gedit gestartet hat. Startet man nun allerdings gedit mit
nohup gedit &
und beendet wieder das Terminal, so bleibt gedit offen.
Dies war ein einfaches Beispiel, aber es macht den eigentlichen Nutzen klar, wenn man z.B. per SSH auf einem fremden Rechner arbeitet und dort einen langwierigen Prozess starten möchte, die ssh-Verbindung aber während des Prozesses nicht permanent aktiv sein soll, weil man etwa den eigenen Rechner ausschalten möchte.
Aufruf mehrerer Programme hintereinander mit nohup¶
Die zuvor angegebene Syntax funktioniert nicht, wenn man mehrere Befehle hintereinander ausführen möchte. Hierfür kann man sich jedoch mit dem bash-Befehl behelfen
nohup bash -c "sleep 10; touch abc" &
erstellt die Daten abc erst nach 10 Sekunden.
Ausgaben können unterdrückt werden mit:
nohup bash -c "sleep 10; touch abc" </dev/null &>/dev/null &
Links¶
Die Verwendung von Screen ist ein weiteres, mächtigeres Verfahren, um Prozesse zu starten, die im Hintergrund weiterlaufen sollen.
manpage 🇬🇧