[[Vorlage(Getestet, general)]] {{{#!vorlage Wissen [:Terminal:Ein Terminal öffnen] }}} [[Inhaltsverzeichnis(1)]] [[Bild(Wiki/Icons/terminal.png, 48, align=left)]] `nohup` ist ein Befehl, um ein Programm auszuführen, wobei dieses dann das [:Signale: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 = Das Programm ist im Paket * '''coreutils''' von Ubuntu enthalten und ist deshalb auf jedem System bereits vorinstalliert. = Aufruf = {{{#!vorlage Befehl nohup PFAD/ZUM/PROGRAMM }}} = Anwendungsbeispiel = Startet man [:gedit:] aus einem Terminalfenster mit dem Befehl {{{#!vorlage 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 {{{#!vorlage Befehl 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 {{{#!vorlage Befehl nohup bash -c "sleep 10; touch abc" & }}} erstellt die Daten `abc` erst nach 10 Sekunden. Ausgaben können unterdrückt werden mit: {{{#!vorlage Befehl nohup bash -c "sleep 10; touch abc" /dev/null & }}} = Links = * Die Verwendung von [:Screen:] ist ein weiteres, mächtigeres Verfahren, um Prozesse zu starten, die im Hintergrund weiterlaufen sollen. * [man:nohup:manpage] {en} # tag: Shell