Was ist Ein-/Ausgabeumleitung?

Das Umlenken von Standardeingabe, Standardausgabe und Standardfehlerausgabe eines Befehls in der Shell auf eine Datei oder Ähnliches statt auf Bildschirm oder Tastatur. > überschreibt eine Datei, >> hängt an ihr Ende an, < macht eine Datei zur Standardeingabe, und 2> leitet die Standardfehlerausgabe (Nummer 2) in eine Datei. 2>&1 leitet die Standardfehlerausgabe dorthin, wohin die Standardausgabe „in diesem Moment“ geht; daher liefern > file 2>&1 und 2>&1 > file unterschiedliche Ergebnisse.

Japanische Bezeichnung: 入出力のリダイレクト

„Ein-/Ausgabeumleitung“ kommt in 3 Übungsfragen aus 1 Themen vor, z. B. Grundlagen von Linux und der Kommandozeile.

Fachgebiet: Grundlagen von Linux und der Kommandozeile

Jetzt üben: Fragen zu Ein-/Ausgabeumleitung

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.

„Ein-/Ausgabeumleitung“ in den Erläuterungen

Fragen mit „Ein-/Ausgabeumleitung“ (3)

  1. Was zeigt das letzte cat an, wenn die obigen Befehle nacheinander ausgeführt werden?
  2. Wie oben gezeigt, wird in einem Verzeichnis, in dem a.txt existiert und nofile nicht, der letzte Befehl ausgeführt. Welches Ergebnis ist richtig?
  3. 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?

Verwandte Begriffe

SSH Shell cron Git grep Hardlink Inode Pipe (|) Regulärer Ausdruck (Regex) Superuser

Zur Glossarübersicht