#! /bin/sh
PRO_NAME=/usr/bin/baby_process
while true ; do
NUM=`ps | grep ${PRO_NAME} | grep -v grep |wc -l`
echo "${NUM} baby_process is running"
sleep 5s
if [ "${NUM}" -lt "1" ];then
echo "${PRO_NAME} was killed"
sleep 5s
${PRO_NAME} &
elif [ "${NUM}" -gt "1" ];then
echo "more than 1 ${PRO_NAME},killall ${PRO_NAME}"
killall -9 ${PRO_NAME}
${PRO_NAME} &
fi
NUM_STAT=`ps | grep ${PRO_NAME} | grep T | grep -v grep | wc -l`
if [ "${NUM_STAT}" -gt "0" ];then
killall -9 ${PRO_NAME}
${PRO_NAME} &
fi
done
exit 0
上面的sh脚本就是守护进程,保存在shell文件watchDog.sh中。
目的是每个5秒钟检查进程baby_process还在不在运行,如果不在,就启动并后台运行。