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


8

我有pid,我只是使用停止了程序

kill -stop PID

现在我想继续做下去

kill -cont PID

但前提是它已经停止。如何检查它是否已停止或正在运行?


您在标题中说了一个程序,所以您是说名称,还是像示例中那样指PID?
aurelien

您要在前台(抓取终端)还是在后台继续操作?
埃里克·塔

Answers:


8

您可以检查过程是否处于停止状态,Tps输出。

你可以做:

[ "$(ps -o state= -p PID)" = T ] && kill -CONT PID
  • [ "$(ps -o state= -p PID)" = T ]测试的输出是否ps -o state= -p PIDT,如果是,则将其发送SIGCONT到进程。用进程的实际进程ID替换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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.