一、需求
服务部署在linux上,要求服务器上的服务可以一直保持正常运行
二、问题
在linux上部署的微服务,不知道什么原因过一段时间就自己停掉了,无法启动。
三、解决办法
添加angle守护进程,通过定时执行脚本来判断程序是否运行,若不是的话则自动启动。
四、实现步骤
1、编写脚本。
在linux中,通过定时执行脚本来判断程序是否执行。(一定要注意编码格式,不要用文本编辑器直接编辑,否则运行会报错)
注意
ps -ef
和ps -C
两种方法的区别,ps -C
可以准确的查询出这个服务名称的条数,而ps -ef
只能匹配有这个名称的进程
条件 | 案例 |
-eq | n1 -eq n2,检查n1是否等于n2 |
-le | n1 -le n2,检查n1是否小于等于n2 |
-ge | n1 -ge n2,检查n1是否大于等于n2 |
-lt | n1 -lt n2,检查n1是否小于n2 |
-gt | n1 -gt n2,检查n1是否大于n2 |
-ne | n1 -ne n2,检查n1是否不等于n |
数字的判断语法,两边是有空格的,不然就会语报错
#!/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
运行结果:
2、配置linux系统定时任务
配置系统定时任务命令
crontab -e
写入需要执行的脚本,每五分钟运行一次(cron表达式)
*/5 * * * * /home/restart.sh
重启系统定时任务(才会生效)
service crond restart
或者
systemctl restart crond.service
不保存正常退出::q!
保存退出:“shitf+z”,连续按两下即可退出
linux编辑保存文件可以看我的博客: xshell修改编辑文件并保存_xshell保存命令_凌抆莂的博客-CSDN博客
3、检测是否执行成功
使用kill命令杀死服务,过几分钟后观察服务是否自动启动,可以正常启动则表示配置成功,不能正常启动的话就是有问题的。
参考:Shell之判断程序是否运行-yellowcong_shell判断进程是否运行_狂飙的yellowcong的博客-CSDN博客