实现原理主要是使用linux提供的crontab机制,定时查询服务器进程是否存在,若是宕机则执行咱们预设的重启脚本。python
首先咱们要向crontab加入一个新任务linux
sudo crontab -e #进入编辑状态,选用vi编辑。 */1 * * * * sh /root/monitor.sh #添加每分钟检测
我这里只是简单的设置每分钟调用一个shell脚本monitor.sh。这里能够配置的更强大,你们能够去搜索一下crontab的教程,网上有不少这类的教程。
这里须要注意的是,不少教程配置command的时候直接使用/root/monitor.sh,我设置的时候发现这样配置不会执行shell脚本,前面加上sh后就能执行了。
而后咱们开始写monitor.sh这个shell脚本。web
#! /bin/sh proc_name="run_cloudweb.py" #进程名 proc_num() #查询进程数量 { num=$(ps -ef | grep $proc_name | grep -v grep | wc -l) return $num } proc_num number=$? #获取进程数量 if [ $number -eq 0 ] #若是进程数量为0 then #从新启动服务器,或者扩展其它内容。 cd /usr/shineonStuido/cloudweb/ sudo nohup python run_cloudweb.py & fi
这个脚本,只是简单的检测了进程是否存在,不存在就自动重启服务器。shell
这里其实也能够扩展一下,好比对日志文件的处理以及重启时间等的记录等等。服务器
到这里就OK了,能够杀掉进程,自行测试一下啦~测试
若是使用ui
num=`ps -ef | grep $proc_name | grep -v grep | wc -l`
则num为字符串,return $num时会出错提示return必须为数字spa
转自:https://blog.csdn.net/cocos2dGirl/article/details/80492843.net