相当于“ps-p”

相当于“ps-p”

我使用的主板没有ps安装完整的命令。我需要的是ps -p等效的(设置$?是否找到特定 PID 的东西)。

有没有办法用另一个命令(如 top)来完成此任务?

## wannabe_watchdog.sh

MY_EXE="$1"
_pid=-1

while test 1 -eq 1 
do
## this ps -p isn't available on the busybox
ps -p ${_pid}
if test $? -eq 0
then
    echo "executing"
    sleep 10
else
    echo "not executing"
    ./${MY_EXE} &
    sleep 1 
    agent_pid=$(cat /var/run/my_pidfile.pid)
    
    echo "waiting for ${_pid}"
    #wait function sometimes isn't blocking (and I never figured out exactly when)
    wait ${_pid}
    echo "${_pid} is dead - restarting"
fi

done

答案1

检查给定 pid 的进程是否存在的经典方法是发送它 “信号”0

kill -0 "${_pid}"

如果进程存在,则将以代码 0 退出,否则以代码 1 退出,并且不会以任何方式影响正在运行的进程。

kill进程需要有足够的权限才能向目标进程发送信号(IE由与目标进程相同的用户(或 root,或具有同等权限)运行。

相关内容