先制作应用程序看门狗脚本程序,定时监控应用进程。
1)当进程没启动,或崩溃闪退后,自动将进程以后台服务拉起来;
2)当监控到系统中有多个进程时,杀掉所有进程,然后自启动一个新进程;
3)当发现应用编程僵尸进程时,杀掉所有进程,然后子启动一个新进程。
脚本名字watchdog.sh,放在mytest同目录下。代码如下:
#! /bin/sh
#进程名字可修改
PRO_NAME=mytest
cd /home/myapp
while true ; do
#用ps获取$PRO_NAME进程数量
NUM=`ps aux | grep -w ${PRO_NAME} | grep -v grep |wc -l`
#echo $NUM
#少于1,重启进程
if [ "${NUM}" -lt "1" ];then
echo "${PRO_NAME} was killed"
nohup ./mytest >/dev/null 2>&1 &
#大于1,杀掉所有进程,重启
elif [ "${NUM}" -gt "1" ];then
echo "more than 1 ${PRO_NAME},killall ${PRO_NAME}"
killall -9 $PRO_NAME
nohup ./mytest >/dev/null 2>&1 &
fi
#kill僵尸进程
NUM_STAT=`ps aux | grep -w ${PRO_NAME} | grep T | grep -v grep | wc -l`
if [ "${NUM_STAT}" -gt "0" ];then
killall -9 ${PRO_NAME}
nohup ./mytest >/dev/null 2>&1 &
fi
sleep 10s
done
exit 0
2 上电自启动
设备上电时,自动执行脚本watchdog.sh即可。
接下来制作安装脚本,将看门狗脚本启动命令,插入到/etc/init.d/rcS,使之可随机自运行。脚本名字install.sh,放在mytest同一个目录下。代码如下:
#!/bin/bash
grep "/home/myapp/watchdog.sh &" /etc/init.d/rcS >/dev/null 2>&1
if [ $? -eq 0 ]
then
echo "watchdog has been installed!"
else
echo "" >> /etc/init.d/rcS
echo "chmod 777 /home/myapp/watchdog.sh" >> /etc/init.d/rcS
echo "/home/myapp/watchdog.sh &" >> /etc/init.d/rcS
echo -e " 33[01;32mservice install completed! 33[0m"
fi
exit 0
3 部署
shell登录到设备,执行以下命令,安装install.sh脚本
cd /home/myapp chmod 777 install.sh ./install.sh4 脚本代码下载
也可以在这里下载笔者上传的脚本代码,感谢支持。



