Als Antwort auf diese Frage möchte ich wissen, wohin STDOUT und STDERR eines Programms, auf dem ich ausgeführt habe, disown -h
umgeleitet werden.
Als Antwort auf diese Frage möchte ich wissen, wohin STDOUT und STDERR eines Programms, auf dem ich ausgeführt habe, disown -h
umgeleitet werden.
Antworten:
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 disown
das 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 disown
bearbeitet 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).