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?

Hermancain
quelle
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.
heemayl
quelle
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
Nur ich
quelle
-4
ps -e | grep | PROGRAM 

oder

while true;
do
kill program 
done 
wait 
MastersProgression
quelle