reko_3 发表于 2018-11-30 12:05:01

tomcat故障自动重启脚本

  前几天由于我前一个公司(刚刚离职- -!)的tomcat总是down(进程存在,无法对外提供服务),由于特征状态不明显不能根据进程来判断,所以我用对比tomcat的catalina.out日志文件最后修改时间的方式来进行,因为我发现当服务器无法提供业务是,日志文件就停止打印了,并且写了一个脚本,并通过crond来执行,脚本的内容如下:


[*]#!/bin/bash
[*]sleep 5
[*]export JAVA_HOME=/usr/jdk
[*]export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
[*]export PATH=$PATH:$JAVA_HOME/bin
[*]x=`ls -l /usr/local/tomcat/logs/| grep catalina.out| awk '{print $8}'` && y=`date | awk'{print $4}' | awk -F: '{print $1":"$2}'`
[*][[ $x = $y ]] &&exit
[*][[ $x != $y ]] && ps -ef | grep tomcat | grep -v grep | cut -c 9-15 | xargs kill -9   
[*]/usr/local/tomcat/bin/startup.sh

  我先简单解释一下这个脚本:
  由于信息写入日志需要一个过程,大家可以试一下把一个很长的文件直接重定向到一个新文件,在重定向未结束前,这个新文件的修改时间是不会变得,所以如果不先sleep一定的时间可能由于一个写入操作未完成而脚本误判断tomcat已经down了,所以脚本开始先设置了sleep 5;
  第二段到第四段是设置tomcat的环境变量;
  第五段是获取系统的当前时间和tomcat日志文件的最后修改时间
  第六段和第七段判断两个时间是否一致,如果一致则退出脚本;如果不一致则先杀掉已经死掉的tomcat进程并重启tomcat。
  为了统计大概多长时间tomcat会死掉,还可以在最后加上echo一段字符。



页: [1]
查看完整版本: tomcat故障自动重启脚本