我们在实际运维过程中,经常会出现某一个程序(如tomcat,perl等)的进程无缘无故就在服务器上消失了,这样的话第一我们需要投入精力去分析它为什么会消失,第二还需要配置相关检查人员,比较耗费时间。
我们可以通过在Linux下写一个shell脚本,并且配置到Crontab中,这样的话当服务器上没有程序进程的时候,让shell自动帮我们完成这个操作,将业务影响的风险降到最低,同时我们可以定期观察Crontab中输出的日志,看是否有这种情况发生,再进行针对性处理,比问题突发起来再处理好很多。
Shell内容:如果需要配置多个程序的话,将最下方注释放开即可。
#!/bin/sh
# 守护脚本,通过 grep 命令检查进程是否存在然后重新启动进程
# 可以配置多个进程
# 根据进程名判断进程是否消失(行数为0),红字为查询进程关键字,必须唯一
if test `ps -ef | grep 'programme name' |grep -v vi |grep -v grep| wc -l` -eq 0
then
#记录发生时间 ,记录丢失进程名
echo `date`
echo 'programme name is missing.And the programme is restarting...!'
#重新启动程序,自己配置
cd /home/inm/ueap-mysql/redis-2.6.17
src/redis-server redis.conf
fi
# 多个进程守护(配置方法与上方相同)
# if test `ps -ef | grep INASProcessManager |grep -v vi |grep -v grep| wc -l` -eq 0
# then
# echo 'INASProcessManager is missing!'
# echo 'INASProcessManager starting!'
# java -jar /jh_app/inas/bin/INASProcessManager.jar >> mng.dump &
# fi
在crontab中配置上以上脚本,并记录日志:
*/3 * * * * /bin/sh /home/aiuap/esb/ueap-collect/watch.sh>>/home/aiuap/esb/ueap-collect/watch.log