Unterbrechen und Fortsetzen von Prozessen

143

Im Bash-Terminal kann ich Control+ Zdrücken, um einen laufenden Prozess anzuhalten. Dann kann ich eingeben fg, um den Prozess fortzusetzen.

Kann ich einen Prozess anhalten, wenn ich nur eine PID habe? Und wenn ja, welchen Befehl soll ich verwenden?

Ich suche nach etwas wie:

suspend-process $PID_OF_PROCESS

und dann mit fortzusetzen

resume-process $PID_OF_PROCESS
Stefan
quelle

Antworten:

172

Mit können Sie killden Vorgang stoppen.

Senden Sie SIGTSTP, um den Vorgang "höflich" zu beenden (dies ist für den normalen Gebrauch vorzuziehen):

kill -TSTP [pid]

Senden Sie für einen "harten" Stopp SIGSTOP:

kill -STOP [pid]

Beachten Sie, dass der Prozess, den Sie durch PID stoppen möchten, in der Jobtabelle Ihrer Shell enthalten ist, dort möglicherweise sichtbar bleibt, aber abgebrochen wird, bis der Prozess fgerneut ausgeführt wird.

Um die Ausführung des Prozesses fortzusetzen, senden Sie SIGCONT:

kill -CONT [pid]
Steve Burdine
quelle
25
Sofern es keine anderen Gründe dafür gibt, würde ich SIGTSTP SIGSTOP vorziehen, da einige Anwendungen SIGTSTP speziell behandeln. Wenn scp beispielsweise einen Fortschrittsbalken anzeigt, bewirkt SIGTSTP, dass der Terminalmodus vor dem Anhalten bereinigt wird. Wenn Sie jedoch SIGSTOP senden, hat SIGTSTP keine Chance dazu.
Ephemient
3
@ephemient Ich habe SIGTSTP ausprobiert. Ich habe gesehen, was Sie darüber gesagt haben, wie Sie das Terminal aufgeräumt haben. Vielen Dank für die Erklärung von SIGTSTP, immer gut, um neue Dinge zu lernen :)
Steve Burdine
2
Es ist auch nützlich zu beachten, dass Sie auf den [pid] -Wert verweisen können, indem Sie das% -Symbol und dann die Auftragsnummer (eine, die Sie beim Ausführen finden jobs) verwenden. Also gehen Sie:kill -TSTP %1
Karoh
Siehe auch: [ stackoverflow.com/questions/11886812/…
AAAfarmclub
43

Verwenden Sie dazu den killBefehl.

Um ausführlicher zu sein, müssen Sie das richtige Signal angeben , d. H

$ kill -TSTP $PID_OF_PROCESS

zum Anhalten des Prozesses und

$ kill -CONT $PID_OF_PROCESS

für die Wiederaufnahme. Dokumentierte hier .

maxschlepzig
quelle
Ich frage mich, welcher Zufall in der Geschichte dazu geführt hat, dass diese Antwort weniger Stimmen erhielt. Die Antworten sind fast die gleichen und dieser kam zuerst ....
Wildcard
7
@Wildcard, als ich die Antwort erstellte, war ich ein bisschen in Eile, daher enthielt es im Grunde nur den ersten Teil bis kill -TSTP(dh wie man suspendiert). 1/2 Jahr später, dh 2011, habe ich meine Antwort nochmals überprüft und festgestellt, dass sie unvollständig ist. Also habe ich es bearbeitet und auch das kill -CONTTeil hinzugefügt . Dies sollte den Unterschied bei den Stimmen im Vergleich zu Steves Antwort erklären.
Maxschlepzig