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


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

 

 

4. 测试

先关掉 tomcat 服务  ./shutdown.sh 

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

 

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

linux centos7 定时执行服务监控脚本_端口号_03

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

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

 

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

linux centos7 定时执行服务监控脚本_运维_05

 

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

 


作者:元月二一