1.在某个文件夹下创建脚本文件:touch xxx.sh;
2.对该脚本赋予执行权限:chmod +x xxx.sh;
3.编辑该脚本,vim xxx.sh;
4.复制如下内容:
#自动检测某个tomcat状态,异常时重启,现在检测的是使用了9080端口的tomcat,因为我服务器是部署多个tomcat的
#jgd
# 获取tomcat开了9080端口的进程ID,根据实际情况修改端口,要是只有一个tomcat可以去掉grep 9080
TomcatID=$(ps -ef |grep tomcat |grep 9080 |grep -w 'apache-tomcat-9.0.0.M21'|grep -v 'grep'|awk '{print $2}')
# tomcat启动程序(这里注意tomcat实际安装的路径)
StartTomcat=/home/zyj13424063620/tomcat9080/apache-tomcat-9.0.0.M21/bin/startup.sh
TomcatCache=/home/zyj13424063620/tomcat9080/apache-tomcat-9.0.0.M21/work
# 定义要监控的页面地址,建议跟上具体项目xxx ,建议 具体到某个页面或接口
WebUrl=http://localhost:9080/xxx
# 日志输出,根据实际情况设置路径,并创建文本
GetPageInfo=/home/zyj13424063620/myshell/logs/tomcatMonitor.info
TomcatMonitorLog=/home/zyj13424063620/myshell/logs/tomcatMonitor.log
Monitor()
{
echo "[info]开始监控tomcat9080...[$(date +'%F %H:%M:%S')]"
if [ $TomcatID ];then # 这里判断TOMCAT进程是否存在
echo "[info]当前tomcat9080进程ID为:$TomcatID,继续检测页面..."
# 检测是否启动成功(成功的话页面会返回状态"200")
TomcatServiceCode=$(curl -s -o $GetPageInfo -m 10 --connect-timeout 10 $WebUrl -w %{http_code})
if [ $TomcatServiceCode -eq 200 ];then
echo "[info]页面返回码为$TomcatServiceCode,tomcat9080启动成功,测试页面正常......"
else
echo "[error]tomcat页面出错,请注意......状态码为$TomcatServiceCode,错误日志已输出到$GetPageInfo"
echo "[error]页面访问出错,开始重启tomcat"
kill -9 $TomcatID # 杀掉原tomcat进程
sleep 3
rm -rf $TomcatCache # 清理tomcat缓存
$StartTomcat
fi
else
echo "[error]tomcat进程不存在!tomcat9080开始自动重启..."
echo "[info]$StartTomcat,请稍候......"
rm -rf $TomcatCache
$StartTomcat
fi
echo "------------------------------"
}
Monitor >>$TomcatMonitorLog
5.修改tomcat配置,tomcat下bin目录,编辑vim catalina.sh,加入如下内容:
export JAVA_HOME=/home/gongzi/http/jdk1.6.0_26
export JRE_HOME=/home/gongzi/http/jdk1.6.0_26/jre
注:根据jdk实际目录
6.设置定时器,命令crontab -e,进入定时器编辑,按i进行编辑,加入如下内容:
*/5 * * * * /home/zyj13424063620/myshell/test.sh
保存退出(命令跟vimy一样),注:根据脚本实际路径填写,这里的意思是每隔五分钟执行一次
到这里就可以了。