shell脚本设置守护进程

来源:互联网 发布:mp3音量调节软件 编辑:程序博客网 时间:2024/05/18 02:50
今日在网上一篇博客上看到用shell脚本实现守护进程,于是参照此博客编写了一个脚本来实现自己守护进程。
应用程序名:pro_test
脚本文件名:mytest.sh
日志文件假:mylog
以上3项都放置在/usr/mytest目录下。


mytest.sh文件内容:
/*****************************************************************
#! /bin/bash




PROGRAM="pro_test"
LOG_PATH=./mylog
cd /usr/mytest
rm -rf ./mylog/*
while true ; do
sleep 9
PRO_CNT=$(ps aux | grep $PROGRAM | grep -v grep | wc -l)
if [ $PRO_CNT -lt 1 ]
then


./$PROGRAM &
date >> $LOG_PATH/check.log
echo "pro_test start" >> $LOG_PATH/check.log
echo "pro_test start"
else
echo "pro_test is exist" $PRO_CNT
fi
PRO_STAT=$(ps aux | grep $PROGRAM | grep T | grep -v grep | wc -l)
if [ $PRO_STAT -eq 1 ] 
then


echo "$PROGRAM is stopped"
killall -9 $PROGRAM
echo "kill $PROGRAM"
sleep 3
echo "restart $PROGRAM"
./$PROGRAM &
date >> $LOG_PATH/check.log
echo "pro_test start" >> $LOG_PATH/check.log
fi
done
exit 0
*****************************************************************************/
编写脚本时有几处注意:
1,if条件语句里面表达式要与左右[ ] 用空格隔开,否则运行时会报错
2,用表达式给变量负值时要将表达式放在括号()里面,并在前面加符号"$",应该还有其他方法 目前只会这种,在参考那篇博客用单引号运行无法通过。
3,ps aux | grep $PROGRAM | grep -v grep | wc -l   此表达式检测运行进程数量
4,ps aux | grep $PROGRAM | grep T | grep -v grep | wc -l  此表达式检测进程运行状态,0:运行  1:停止 但进程依然存在  可以通过命令 kill -SIGSTOP pid  进行测试
第一个条件判断目标进程运行数目 数目小于1即为0 则运行目标进程
第二条件判断目标进程是否处于停止状态 处于停止状态则kill掉 重新运行该进程
应用程序编译完及脚本编写好后,在/etc/rc.local 文件中添加执行语句 /usr/mytest/mytest.sh &    重启后就能自动加载守护进程了。
0 0
原创粉丝点击