Jas*_*son 25 unix shell pid sh
我想检查PID是否正在运行(即存在并且没有被僵尸).
它真的很快,/proc/$PID/stat但我想要一些更便携的东西.
我现在最好的是:
( STAT="$(ps -ostat= -p$PID)"; test "$STAT" -a "$STAT" "!=" "Z" )
Run Code Online (Sandbox Code Playgroud)
这似乎适用于BSD和Linux.有没有更好的办法?
希望符合 POSIX 标准。用破折号测试。要使用它,请使用您最喜欢的编辑器保存它,使其可执行 ( chmod 755 foo.sh),然后使用 PID 参数运行它。
当然,您可以根据需要进行调整。
#!/bin/sh
pid="$1";
psout=$(ps -o s= -p "$pid");
pattern='[SRDTWX]';
case "$psout" in
$pattern) echo "Not a zombie";;
Z) echo "Zombie found";;
*) echo "Incorrect input";;
esac
Run Code Online (Sandbox Code Playgroud)