Grundlagen von Linux und der Kommandozeile
Auf einem per SSH erreichten Server wurde eine langwierige Berechnung mit „./run.sh &“ gestartet; als die Verbindung getrennt wurde, brach auch die Berechnung ab. Wie startet man sie am besten, damit sie nach dem Trennen der Verbindung weiterläuft?
- A./run.sh > run.log 2>&1 &
- Bnice -n 19 ./run.sh > run.log 2>&1 &
- Cnohup ./run.sh > run.log 2>&1 &
Antwort und Erläuterung anzeigen
Antwort: C. nohup ./run.sh > run.log 2>&1 &
Bricht die Verbindung ab, erhält die Shell SIGHUP, das meldet, dass das Terminal aufgelegt hat (Hangup), und Shells wie bash senden SIGHUP auch an ihre Jobs. Die Standardreaktion auf SIGHUP ist das Beenden, also werden auch Hintergrundjobs beendet. nohup startet den Befehl so, dass er SIGHUP ignoriert, und wenn seine Ausgabe in eine Datei geht, läuft die Berechnung nach dem Trennen der Verbindung weiter. Wird er ohne Umleitung der Ausgabe aus einem Terminal gestartet, schreibt nohup die Ausgabe in eine Datei namens nohup.out. Verbreitet ist auch, ein Terminal-Multiplexing-Programm wie tmux oder screen zu verwenden und sich später wieder mit derselben Sitzung zu verbinden.
Weiter: 9 weitere Fragen zu Grundlagen von Linux und der Kommandozeile