Linux定时检测tomcat状态,宕掉时自动重启的方法,linuxtomcat


废话少说,直接上脚本:

#!/bin/bash

#author:jgd

#Date:2017-09-15

#自动检测某个tomcat状态,异常时重启

# ---- Start ----

# 获取tomcat进程ID ,根据自己实际情况进行修改,比如端口和tomcat名称

TomcatID=$(ps -ef |grep tomcat |grep 9085 |grep -w 'apache-tomcat-9.0.0.M21'|grep -v 'grep'|awk '{print $2}')

# 获得tomcat进程数,根据自己实际情况进行修改,比如端口和tomcat名称

TomcatCount=`ps -ef |grep tomcat |grep 9085 |grep -w 'apache-tomcat-9.0.0.M21'|grep -v 'grep'|wc -l`

# tomcat启动程序(这里注意tomcat实际安装的路径)

StartTomcat=/home/zyj13424063620/tomcat9085/apache-tomcat-9.0.0.M21/bin/startup.sh

TomcatCache=/home/zyj13424063620/tomcat9085/apache-tomcat-9.0.0.M21/work

# 定义要监控的页面地址,可根据自己实际工程进行修改

WebUrl=http://localhost:9085/CommonCloud/views/index.jsp

# 日志输出,根据自己服务器情况进行修改

GetPageInfo=/home/zyj13424063620/myshell/logs/9085/tomcatMonitor.info

TomcatMonitorLog=/home/zyj13424063620/myshell/logs/9085/tomcatMonitor.log

Monitor()

{

echo "[info]开始监控tomcat...[$(date +'%F %H:%M:%S')]"

if [ $TomcatCount -gt 0 ];then # 这里判断TOMCAT进程是否存在

echo "[info]当前tomcat进程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,tomcat启动成功,页面正常......"

else

echo "[error]tomcat页面出错,状态码为$TomcatServiceCode,错误日志已输出到$GetPageInfo"

echo "[info]页面访问出错,开始重启tomcat"

kill -9 $TomcatID # 杀掉原tomcat进程

sleep 3

rm -rf $TomcatCache # 清理tomcat缓存

echo "[info]现在开始重启tomcat..."

echo "[info]请稍后..."

$StartTomcat

fi

else

echo "[error]tomcat进程不存在!"

echo "[info]获取信息TomcatID:$TomcatID"

echo "[info]获取信息TomcatCount:$TomcatCount"

echo "[info]tomcat开始自动重启"

echo "[info]$StartTomcat,请稍候......"

rm -rf $TomcatCache

$StartTomcat

fi

echo "------------------------------"

}

Monitor >>$TomcatMonitorLog

以上就是就检测并自动重启tomcat的shell脚本,需要在定时添加

编辑定时器命令:

crontab -e

例如:

\

每五分钟检测一次,即执行这个脚本一次。

进行编辑。

注意:脚本自动重启tomcat需要修改在tomcat的bin目录下的Catalina.sh,指定jdk或jre安装路径,比如添加

\

相关内容