Tomcat服务奔溃自动重启

发布于 13 天前  14 次阅读


在日常运维工作中时常遇到一些项目 失去维保服务或者老项目停止维护后,时常奔溃 需要手动启动

使用该脚本免去手动启动的繁琐

⚠️注意,该脚本使用定时任务执行,时间间隔过短会导致 当项目奔溃之后脚本监测到奔溃并且自动重启,项目没有完全启动起来的时候 脚本再次进行监测,此时会进入 反复重启 导致脚本失效 ,项目一直在启动关闭启动关闭!

#!/bin/sh
# 获取tomcat的PID
TOMCAT_PID=$(ps -ef | grep tomcat | grep -v 'tomcatMonitor'  |grep -v 'grep' | awk '{print $2}')
# tomcat的启动文件位置
START_TOMCAT=/home/apache-tomcat-9.0.48/bin/startup.sh
# 需要监测的一个GET请求地址
MONITOR_URL=http://127.0.0.1:8080/
# 监测日志输出路径
TOMCAT_MONITOR_LOG=/home/apache-tomcat-9.0.48/logs/tomcatMonitor.log
Monitor()
{
  # 输出时间,注意date后有个空格
  echo "[$(date +'%F %H:%M:%S')]"
  echo "[info]$TOMCAT_PID,开始监控tomcat..."
  # 判断tomcat的PID是否存在,如不存在说明tomcat进程已关闭,注意[]前后,变量前后,都要有空格
  if [[ $TOMCAT_PID ]];then
    echo "[info]当前tomcat的PID为:$TOMCAT_PID,继续监测页面..."
    # 向监测的地址发送请求并获取响应码
    HTTP_REPONSE_STATUS=$(curl -l -m 10 -o /dev/null -s -w %{http_code} $MONITOR_URL)
    # 如果响应码为200证明tomcat在正常启用
    if [[ $HTTP_REPONSE_STATUS -eq 200 ]];then
      echo "[info]tomcat启动正常..."
    else
      echo "[error]页面返回码为$HTTP_REPONSE_STATUS,开始重启tomcat..."
      # 结束tomcat进程
      kill -9 $TOMCAT_PID
      # 5秒后重启tomcat
      sleep 5
      $START_TOMCAT
    fi
  else
    echo "[error]tomcat进程不存在,开始启动..."
    echo "[info]$START_TOMCAT,..."
    $START_TOMCAT
  fi
  echo "监测执行完成"
}
# 输出到指定文件中
Monitor>>$TOMCAT_MONITOR_LOG

因为喜欢所以折腾。。。