Manchmal, einige Zeit nachdem ich einen Prozess mit bg
in bash hinterlegt habe , wenn ich in derselben Shell die Eingabetaste drücke, um die Eingabeaufforderung erneut anzuzeigen (nur um zu überprüfen, ob ich noch in bash bin, wenn eine Ausgabe des Hintergrundprozesses angezeigt wurde), Der Hintergrundprozess scheint spontan anzuhalten.
Wenn ich es noch bg
einmal mache , tritt das gleiche Problem erneut auf.
Der einzige Weg, dies zu beheben, scheint zu sein fg
.
Warum passiert das?
terminal
io
job-control
background-process
Robin Green
quelle
quelle
Antworten:
Dies geschieht normalerweise, wenn der Prozess versucht, aus seinem
stdin
Stream zu lesen . Wenn sich der Prozess im Hintergrund befindet, empfängt er ein TTIN-Signal und wird somit eingefroren (dasselbe Verhalten wie ein STOP-Signal). Es gibt auch das Doppelsignal TTOU, wenn ein Hintergrundprozess versucht, auf sein Terminal zu schreiben.Wenn Sie es in den Vordergrund stellen, wird der Vorgang fortgesetzt und es kann von Ihrem Terminal gelesen werden.
Demo:
Eine Möglichkeit, dies zu vermeiden, ist die Verwendung
nohup
. Dies kann jedoch seltsame Auswirkungen haben, wenn das Programm nicht damit umgeht, dass der Eingabestream umgeleitet wird/dev/null
.quelle