我使用的是一块没有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
检查给定 pid 是否存在进程的经典方法是向其发送 “信号” 0:
如果进程存在,这将以代码 0 退出,否则为 1,并且不会以任何方式影响正在运行的进程。
该
kill
进程需要有足够的权限才能向目标进程发送信号(即由与目标进程相同的用户运行,或 root,或具有同等权限)。