如何从命令行检查进程是否已停止?

her*_*ain 8 command-line process signals ps process-management

我有pid,我刚刚停止了一个程序使用

kill -stop PID

现在我想继续做

kill -cont PID

但前提是它已经停止了。我如何检查它是停止还是运行?

hee*_*ayl 8

可以检查进程是否处于停止状态,T是否ps输出。

你可以做:

[ "$(ps -o state= -p PID)" = T ] && kill -CONT PID
Run Code Online (Sandbox Code Playgroud)
  • [ "$(ps -o state= -p PID)" = T ]测试 的输出是否ps -o state= -p PIDT,如果是则发送SIGCONT到进程。用进程的实际进程 ID 替换 PID。


Jus*_*tMe 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
Run Code Online (Sandbox Code Playgroud)