Linux下通过配置Crontab实现进程守护

我们在实际运维过程中,经常会出现某一个程序(如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

    原文作者:Summer的小西瓜
    原文地址: https://segmentfault.com/a/1190000011014089
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞