shell判断程序是否运行,守护进程
一、需求
服务部署在linux上,要求服务器上的服务可以一直保持正常运行
二、问题
在linux上部署的微服务,不知道什么原因过一段时间就自己停掉了,无法启动。
三、解决办法
添加angle守护进程,通过定时执行脚本来判断程序是否运行,若不是的话则自动启动。
四、实现步骤
1、编写脚本。
在linux中,通过定时执行脚本来判断程序是否执行。(一定要注意编码格式,不要用文本编辑器直接编辑,否则运行会报错)
注意ps -ef 和ps -C两种方法的区别,ps -C可以准确的查询出这个服务名称的条数,而ps -ef 只能匹配有这个名称的进程
数字的判断语法,两边是有空格的,不然就会语报错
#!/bin/bash #ps -ef |grep zookeeper 这个就是看zookeeper的启动情况 #grep -v "grep" 是为了去掉查询 grep的那一条 #wc -l 是计数的 COUNT=$(ps -ef |grep zookeeper |grep -v "grep" |wc -l) echo $COUNT if [ $COUNT -eq 0 ]; then echo NOT RUN else echo is RUN fi echo "end ...."
运行结果:
2、配置linux系统定时任务
配置系统定时任务命令 crontab -e 写入需要执行的脚本,每五分钟运行一次(cron表达式) */5 * * * * /home/restart.sh 重启系统定时任务(才会生效) service crond restart 或者 systemctl restart crond.service
不保存正常退出::q!
保存退出:“shitf+z”,连续按两下即可退出
linux编辑保存文件可以看我的博客:
3、检测是否执行成功
使用kill命令杀死服务,过几分钟后观察服务是否自动启动,可以正常启动则表示配置成功,不能正常启动的话就是有问题的。
参考: