如何查看进程是否在 unix 中挂起

sho*_*zer 3 unix bash process

我正在尝试恢复所有挂起的进程,但我不知道如何检查进程是否被挂起。我试过了,但它没有表明进程是暂停还是运行。

jll*_*gre 7

/proc/<pid>/status如果您使用的是 Linux,您可能会使用 Ipor 的方式 ( ),但一个更便携的解决方案应该适用于大多数 Unix/Unix 之类的操作系统,那就是使用标准命令,正如 Barmar 在评论中已经建议的那样:

ps -o s= -p <pid>
Run Code Online (Sandbox Code Playgroud)

这将显示T挂起的进程(如果因为被调试而停止)。

  • 很好的答案!对于 Mac OS X,您需要使用 `state=`。 (3认同)

Ipo*_*cer 2

使用 pid 检查进程$pid很简单:

if grep -q "^State.*stopped" /proc/$pid/status; then
    echo Process $pid is sleeping
else
    echo Process $pid is active
fi
Run Code Online (Sandbox Code Playgroud)