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


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 фактическим идентификатором процесса.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.