tomcat监控自动重启脚本

tomcat服务总是卡住不干活,需要重启才会好,

参考网上的资料写了个监控脚本,自动重启,减少人工操作。

 

#!/bin/bash   #shell声明
tom_pid=`ps -ef|grep tomcat|grep -v grep|awk '{print $2}'`
 #获取Tomcat进程id
TM_start=/usr/local/tomcat/bin/startup.sh #定义启动脚本


Monitor() #定义函数
{
   echo "[info]开始监控tomcat...[$(date +'%F %H:%M:%S')]" #输出log
   if [ $tom_pid ];then  #判断pid是否为空
      echo "[info]当前tomcat进程ID为:$tom_pid,继续检测页面..." #输出log
      status_code=`curl -m 5 -s -I "https://xxx.com/xxx/"|head -n 1|awk '{print $2}'` #请求页面,获取状态码
      if [[ $status_code -eq 200 ]];then #判断状态码
         echo "[info]页面返回码为$status_code,tomcat正常运行,页面正常"  #输出log
      elif [[ $status_code -eq 404 ]];then #判断状态码
         echo "[error]tomcat页面出错,请注意...状态码为$status_code" #输出log
         echo "[error]页面访问出错,开始重启tomcat" #输出log
         rm -rf /usr/local/tomcat/webapps/xxxx/ #删除旧目录,重启自己生成
         echo "已删除xxxx目录" #输出log
         kill -9 $tom_pid #杀掉进程
         sleep 3 #等待3秒
         rm -rf /usr/local/tomcat8080/work/ #删除work目录
         $TM_start #启动tomcat
      else
         echo "[error]tomcat页面出错,请注意...状态码为$status_code" #输出log
	 echo "[error]页面访问出错,开始重启tomcat" #输出log
         kill -9 $tom_pid #杀掉进程
         sleep 3 #等待3秒
         rm -rf /usr/local/tomcat8080/work/ #删除work目录
         $TM_start #启动tomcat
      fi
   else
      echo "[error]tomcat进程不存在!tomcat开始自动重启..." #输出log
      echo "[info]正在启动tomcat,请稍候..." #输出log
      rm -rf /usr/local/tomcat8080/work/ #删除work目录
      $TM_start #启动tomcat
   fi
   echo "---------------------------------------------------------" #输出隔断
}



Monitor >> /logs/xx.log #调用函数,输出到/logs/xx.log

为什么删除tomcat的work目录:

work目录下放的是编译后的项目,webapps下的目录启动后都会拷到work,有时候杀掉进程来不及清理,重启后就会出现问题,所以重启前先给清理了,启动的时候会自动生成。

curl:

-m –max-time SECONDS Maximum time allowed for the transfer #最大传输时间,按照秒来的。

-s –silent Silent mode. Don’t output anything #静默模式,不输出任何东西。

 

 

 

 

 

 

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发