如果一个服务进程想要一直运行,在崩溃或被停止后自动运行,则它需要一个守护进程.
脚本的编写流程为:
while true
{
检测被守护进程的状态
若被守护进程终止则启动它
sleep 使程序周期性运行
}
脚本范例: 守护一个service
#!/bin/bash
SERVICE="/xxx/xxx/abc.sh"
SERVICE_LOG="/xxx/xxx/abc.log"
SERVICE_ERROR="/xxx/xxx/abc.error"
ERRORLOG="errorlog"
while true
do
PID_COUNT=`ps aux|grep "$SERVICE" |grep -v grep |wc -l`
if [ $PID_COUNT -eq 0 ]
then
[ ! -e $SERVICE ] && echo "ERROR: $SERVICE not exists." >> $ERRORLOG && exit
nohup sh $SERVICE 1>>$SERVICE_LOG 2>>$SERCICE_ERROR &
fi
sleep 60
done
exit $?