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?

  1. A./run.sh > run.log 2>&1 &
  2. Bnice -n 19 ./run.sh > run.log 2>&1 &
  3. 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.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen von Linux und der Kommandozeile

  1. Welche Zeichen werden angezeigt, wenn die beiden obigen Zeilen in einer Shell ausgeführt werden?
  2. Welche Ausgaben erzeugen die beiden echo-Befehle, wenn die obigen Befehle nacheinander ausgeführt werden?
  3. Wie oben gezeigt, wird das Skript s.sh mit Argumenten ausgeführt. Welche Ausgabe ist richtig?
  4. In welchem Fall ist die Bedingung des obigen if in einem Shell-Skript wahr?
  5. Welche Dateien liegen nach der obigen Sitzung im Verzeichnis?