1、新建monitor.sh脚本文件,内容如下,根据实际情况进行修改
#!/bin/sh
# 获取tomcat进程ID /usr/local/tomcat_ds_api
#TomcatID=$(ps -ef |grep tomcat |grep -w 'ps -ef |grep tomcat'|grep -v 'grep'|awk '{print $2}')
# tomcat启动程序(这里注意tomcat实际安装的路径)
#./etc/profile #此行必不可少,若少了,tomcat无法自动重启
StartTomcat=/usr/share/tomcat/bin/startup.sh #tomcat绝对路径的启动文件地址
StopTomcat=/usr/share/tomcat/bin/shutdown.sh #tomcat绝对路径的关闭文件地址
TomcatCache=/usr/share/tomcat/bin/work #tomcat缓存
# 定义要监控的页面地址
WebUrl=http://localhost:8080/
# 日志输出
TomcatMonitorLog=/tmp/TomcatMonitor.log
#JAVA_HOME=/usr/share/jdk1.8.0_201 #注释,预备开机重启没有java环境
#JRE_HOME=/usr/share/jdk1.8.0_201/jre
tomcat_path=/usr/share/tomcat/ #tomcat 完整路径
#获取 tomcat_path 所知tomcat 的进程ID
TomcatID=$(ps -ef |grep tomcat |grep -w $tomcat_path|grep -v 'grep'|awk '{print $2}')
#监控脚本
Monitor()
{
echo "[info]开始监控tomcat...[$(date +'%F %H:%M:%S')]"
if [[ $TomcatID ]];then # 这里判断TOMCAT进程是否存在
echo "[info]当前tomcat进程ID为:$TomcatID,继续检测页面..."
# 检测是否启动成功(成功的话页面会返回状态"200")
TomcatServiceCode=$(curl -I -m 10 -o /dev/null -s -w %{http_code} $WebUrl )
if [ $TomcatServiceCode -eq 200 ];then
echo "[info]页面返回码为$TomcatServiceCode,tomcat启动成功,测试页面正常......"
else
echo "[error]tomcat页面出错,请注意......状态码为$TomcatServiceCode,错误日志已输出到$GetPageInfo"
echo "[error]页面访问出错,开始重启tomcat"
kill -9 $TomcatID # 杀掉原tomcat进程
sleep 3
rm -rf $TomcatCache # 清理tomcat缓存
$StopTomcat
echo "[info] tomcat关闭成功"
$StartTomcat
echo "[info] tomcat重启成功"
fi
else
echo "[error]tomcat进程不存在!tomcat开始自动重启..."
echo "[info]$StartTomcat,请稍候......"
rm -rf $TomcatCache
$StartTomcat
echo "[info] tomcat启动成功"
fi
echo "------------------------------"
}
Monitor>>$TomcatMonitorLog
将脚本放到任意目录下,此时,这个脚本文件是不可用的
##进入脚本目录
执行:
vi monitor
输入:
:set ff=unix
保存:
:wq
2.测试Shell脚本monitor.sh是否允许成功
第一:执行脚本,如果报权限错误:
则执行:
sudo chmod 744 monitor.sh
第二:再次执行脚本
如果报/bin/bash^M:,坏的解释器,没有那个文件或目录:
则执行:
sed -i 's/\r$//' monitor.sh
第三:执行脚本./monitor.sh
如果有\z字符输出不了:更改xshell字体
3.把脚本加到crontab定时任务中
每分钟检查一次
*/1 * * * * /usr/share/tomcat/bin/monitor.sh
4、如果未安装crontab,先安装
yum install vixie-cron
安装完成,可查看常用命令
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
查看crontab服务状态:service crond status
手动启动crontab服务:service crond start
查看crontab服务是否已设置为开机启动,执行命令:ntsysv
在CentOS系统中加入开机自动启动:chkconfig --level 35 crond on
5、参考3添加定时任务
#添加定时任务
执行:
crontab -e
再打开的文件输入:
*/1 * * * * /usr/share/tomcat/bin/monitor.sh
保存:
:wq
6、查看启动的定时任务
crontab -l
参考链接:linux下实时监测tomcat关闭并启动_maying0124的博客-CSDN博客_linux 定时关闭tomcat
Linux下自动检测Tomcat宕机,并自动重启[通俗易懂] - 腾讯云开发者社区-腾讯云