Wohin richtet sich der STDOUT eines abgelehnten Programms?

11

Als Antwort auf diese Frage möchte ich wissen, wohin STDOUT und STDERR eines Programms, auf dem ich ausgeführt habe, disown -humgeleitet werden.

Geworfen
quelle

Antworten:

10

disownändert die Programme STDOUT / ERR nicht. Sie werden weiterhin dorthin geleitet, wo Sie sie umgeleitet haben (mit >usw.). Wenn Sie sie nicht umgeleitet haben, werden sie weiterhin in das Terminal verschoben, von dem aus Sie das Programm gestartet haben (bis Sie das Terminal schließen. In diesem Fall werden sie verworfen).

Führen Sie dies zur Veranschaulichung in einem Terminal aus:

bash -c 'while true; do sleep 1; echo hi; done' &

Dies wird jede Sekunde "Hallo" drucken (und dich schrecklich nerven ;-)). Wenn Sie disowndas Programm nach dem Start starten, wird das "Hallo" einfach fortgesetzt. Sie müssen die PID der Shell finden (z. B. ps) und sie beenden, damit sie stoppt.

Bearbeiten:

Basierend auf den Kommentaren möchten Sie möglicherweise wirklich die Ausgabe des Programms wiederherstellen, nachdem Sie es disownbearbeitet und das Terminal geschlossen haben, auf dem es ausgeführt wurde. Dies wird in dieser Frage erläutert: Nachträgliches Remote-Nohup mit tcsh ( dank Quacksalber).

sleske
quelle
Nach seiner vorherigen Frage ist die Tatsache, dass er dieses vorherige Terminal geschlossen hat. Wie kann er dann die Ausgabe bekommen?
Gnoupi
@ Gnoupi: Ich glaube nicht, dass es eine Möglichkeit gibt, die Ausgabe zurückzubekommen. Zumindest habe ich noch nie davon gehört.
Sleske
Danke für den Kommentar Gnoupi :-) Tatsächlich ist die Ausgabe nirgends zu finden. Ich werde aber weiter suchen :-)
Thrawn
1
das ist wirklich die Antwort: Verleugnung ändert nichts; Sie müssen eine Erfassung oder Umleitung einrichten, wenn Sie den Vorgang starten . wenn Sie es später benötigen, GDB ist Sie (nur) Freund: superuser.com/questions/50058/...
Quack quixote
@quack - Ich würde sagen, dass die Frage überarbeitet werden muss, um den tatsächlichen Anwendungsfall und nicht nur das Tool hervorzuheben. In der aktuellen Form (zentriert auf Verleugnung) ist dies in der Tat die richtige Antwort. Aus dem Kontext mit der vorherigen Frage möchte der Benutzer jedoch einfach die Ausgabe wiederherstellen, und in diesem Fall ist Ihr Link die Antwort.
Gnoupi