Как я могу проверить, остановлен ли процесс из командной строки?

8

У меня есть пид, и я просто остановил программу, используя

kill -stop PID

Теперь я хочу продолжить это, делая

kill -cont PID

Но только если это уже остановлено. Как мне проверить, остановлен ли он или работает?

Херман Кейн
источник
Вы называете программу в названии, значит, вы имеете в виду название или PID, как в примере?
Аврелиен
Вы хотите продолжить это на переднем плане (захват терминала) или на заднем плане?
Эрик Тауэрс

Ответы:

8

Вы можете проверить , является ли процесс находится в остановленном состоянии, Tявляется psвыходом.

Ты можешь сделать:

[ "$(ps -o state= -p PID)" = T ] && kill -CONT PID
  • [ "$(ps -o state= -p PID)" = T ]проверяет, является ли вывод ps -o state= -p PIDis T, если это так, отправьте SIGCONTпроцессу. Замените PID фактическим идентификатором процесса.
heemayl
источник
5

Другой способ будет

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
Просто я
источник
-4
ps -e | grep | PROGRAM 

или

while true;
do
kill program 
done 
wait 
MastersProgression
источник