原文链接:https://blog.csdn.net/qq_37936542/article/details/81086928
项目上线之后,tomcat服务器有时候会莫名其妙的挂掉,利用shell写一个看门狗程序,监测tomcat异常关闭后,重启服务器。
1:新建脚本文件,赋予权限
-
touch start.sh
-
chmod 755 start.sh
2:编写脚本文件
-
#!/bin/sh
-
# 自动监控tomcat并且在异常时执行重启操作
-
# 定义java环境变量
-
export JAVA_HOME=/usr/local/myApp/jdk1.8
-
# 获取端口号为8080的tomcat进程ID(考虑到有多个tomcat服务器,用8080关键词)
-
# grep -v grep 排除grep命令自带的进程id
-
# awk '{print $2}' 只保留结果中第二列的值
-
pid=$(ps -ef |grep 8080|grep -v grep|awk '{print $2}')
-
# tomcat启动脚本
-
start=/usr/local/myApp/tomcat8080/bin/startup.sh
-
# tomcat缓存
-
cache=/usr/local/myApp/tomcat8080/work
-
# tomcat链接地址
-
url=http://localhost:8080
-
# 监控时的日志输出
-
log=/tmp/my.log
-
#linux垃圾回收站
-
hole=/dev/null
-
function doIt()
-
{
-
if [ $pid ]
-
then
-
echo "tomcat进程ID存在"
-
code=$(curl -s -o $hole -m 10 --connect-timeout 10 $url -w %{http_code}" ") #测试链接是否可以正常访问
-
if [ $code -eq 200 ]
-
then
-
echo "测试链接正常"
-
else
-
echo "测试链接失败,重启tomcat"
-
kill -9 $pid # 杀掉进程
-
sleep 5
-
rm -rf $cache # 清理tomcat缓存
-
$start
-
fi
-
else
-
echo "tomcat进程id不存在,重启中...."
-
rm -rf $cache
-
$start
-
fi
-
echo "------------------------------"
-
}
-
doIt>>$log #执行函数,并打印日志
3:设置定时执行start.sh文件
crontab -e
添加内容:
*/30 * * * * /tmp/mySh/start.sh #每30分钟执行一次
4:启动定时任务
-
service crond start #启动定时任务
-
service crond status #查看状态
-
service crond restart #重启定时任务
-
service crond stop #停止定时任务
5:查看定时任务
crontab -l
注意:某些自己用yum install xxx安装的系统命令,在shell脚本文件执行时可能会失效,这时候使用
which xxx 查看命令的安装目录,然后在shell脚本文件中使用绝对路径就ok了
参考文章:https://blog.csdn.net/zzq900503/article/details/50723191
关注「编程微刊」公众号 ,在微信后台回复「领取资源」,获取IT资源300G干货大全。
公众号回复“1”,拉你进程序员技术讨论群.