linux centos7 定时执行服务监控脚本

2021-08-25

1. 需求

在服务挂掉之后我们要怎么做才能保证服务在短时间内开启?可以编写脚本监控服务的状态,在服务挂掉后及时将其开启,并定时执行该脚本。

 

2. 脚本编写

思路:平常我们可以通过 ps ,netstat 命令查看服务是否已经开启,所以可以通过这两个命令去监控服务的状态。每个服务的端口号是一一对应的,故我们选择监控端口号来判断服务的状态。具体脚本如下:

# 编写脚本 
vi tomcat_monitor_port.sh
# init,因为 crontab 用的系统变量
source ~/.bash_profile

# grep 服务的端口号,grep  LISTEN 表示服务正在正常运行
server=`netstat -nat | grep 8090 | grep  LISTEN`

# 如果服务没有开启,sever 会是空的
# 如果服务没有开启,开启;若服务已经开启,输出提示
if [ ! "$server" ];
then
        cd /home/server/app/tomcat-7.0.109-1/bin
        ./startup.sh
else
        echo " tomcat is  running!! "
fi
# 先执行一下,确保脚本可以正常运行
sh tomcat_monitor_port.sh

如果执行脚本发现错误,可以使用 sh -x tomcat_monitor_port.sh 进行错误排查

 

3. 设置定时任务

# 添加定时任务
crontab -e

# 每分钟检查一次 tomcat 进程是否运行,若没运行启动它
* * * * * sh /home/server/scripts/tomcat_monitor_port.sh

 

4. 测试

先关掉 tomcat 服务  ./shutdown.sh 

 

查看端口 netstat -nat | grep 8090 ,服务正在关闭,现在的状态是 TIME_WAIT

等一分钟后再看,服务开启,现在端口状态变成 LISTEN

 

查看定时任务执行日志 cat /var/spool/mail/server 

 

 OK,到这里,一个简单的定时执行的服务监控脚本就完成啦

 

posted @ 2021-08-25 18:02  元月二一  阅读(1144)  评论(0编辑  收藏  举报