实现原理通过监听端口,如果端口挂掉,尝试重启服务,并发送邮件进行通知(脚本中没有发送邮件的内容,有兴趣的小伙伴可以自行添加)
1.首先第一步我们需要找出对应的端口和对应的java服务
netstat-tunlp | grep "java"
2.我们第二步就是怎么判断这个进程是否关闭了
netstat -an | grep "8080"|awk '$NF == "LISTEN" {print $0}'|wc -l
这个命令要是不明白的,可以自行百度
3.已知有两个端口,我们关闭一个端口,在查查另外的一个端口的状态
kill -9 进程号
4. 0代表关闭
6.已知端口关闭代表0,开启代表1,那么已经知道这两个条件,那就开始写shell脚本吧
#!/bin/bash
ListeningPort=`netstat -an | grep "8080"|awk '$NF == "LISTEN" {print $0}'|wc -l`
ListeningPort1=`netstat -an | grep "8081"|awk '$NF == "LISTEN" {print $0}'|wc -l`
if [ $ListeningPort -eq 0 ]
then
echo "`date` : listener8081,8080 port is down">>/usr/local/jar/listen.log
nohup java -jar demo-1.jar &
elif [ $ListeningPort1 -eq 0 ]
then
echo "`date` : listener8081,8080 port is down">>/usr/local/jar/listen.log
# 如果8081或者8080端口down了,发送邮件(发送邮件没写,用python或者java写一个既可)
nohup java -jar demo-2.jar &
else
echo "`date` : 8081和8080端口正常" >>/usr/local/jar/listen.log
fi
7.接下来就是设置一个定时执行的任务
可以参考我的另外一个,到此就全部结束了,感谢大家观看,收工下班回家!
https://blog.csdn.net/qq_38925100?spm=1000.2115.3001.5343