Wie kann ich überprüfen, ob ein Prozess über die Befehlszeile gestoppt wurde?


8

Ich habe die PID und ich habe gerade ein Programm mit gestoppt

kill -stop PID

Jetzt möchte ich damit weitermachen

kill -cont PID

Aber nur wenn es schon aufgehört hat. Wie würde ich überprüfen, ob es gestoppt ist oder läuft?


Sie sagen ein Programm im Titel, also meinen Sie den Namen oder die PID wie im Beispiel?
Aurélien

Möchten Sie es im Vordergrund (am Terminal) oder im Hintergrund fortsetzen?
Eric Towers

Antworten:


8

Sie können überprüfen, ob der Prozess gestoppt Tist und psausgegeben wird.

Du kannst tun:

[ "$(ps -o state= -p PID)" = T ] && kill -CONT PID
  • [ "$(ps -o state= -p PID)" = T ]testet, ob die Ausgabe von ps -o state= -p PIDist T, wenn ja, SIGCONTan den Prozess senden . Ersetzen Sie die PID durch die tatsächliche Prozess-ID des Prozesses.

5

Ein anderer Weg wäre

pid=1
status=`cat /proc/$pid/wchan`
if [ "$status" == "do_signal_stop" ] ; then
  echo "$pid sleeps: $status"
else
  echo "$pid does not sleep: $status"
fi

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.