shell判断程序是否运行,守护进程

一、需求

        服务部署在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

echo "end ...."

运行结果:

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博客

你可能感兴趣的:(linux,运维,服务器)