linux定期监测tomcat状态 - cytggit/Map-openlayers GitHub Wiki

每小时检查:

  crontab -e
  > 0 * * * * /mnt/shell/check_tomcat.sh 8090
  service crond restart

check_tomcat.sh如下:

  #!/bin/sh
   
  # ----------------------------------------------
  # ----------  自动监控tomcat状态 ------------
  # ----------------------------------------------
  # 环境变量
  export JAVA_HOME=/opt/java/jdk1.8.0_181
  # tomcat路径
  tomcat_d=/opt/java/tomcat_$1
  # 监控的页面地址 
  url=http://localhost:$1
  # 日志输出
  log=/tmp/my.log
  #linux垃圾回收站
  hole=/dev/null
  
  # tomcat启动脚本
  startSH=$tomcat_d/bin/startup.sh
  # tomcat缓存
  cache=$tomcat_d/work
  
  echo "=====" `date +"%Y年 %m月 %d日 %H时 %M分"` "====="  >> $log 
  
  # 获取指定端口的tomcat pid
  pid=$(ps -ef |grep tomcat_$1|grep -Ev 'grep|check_tomcat' |awk '{print $2}')
  
  function doIt(){
  	if [ $pid ]
  	then
  		echo "tomcat进程ID存在"
  		code=$(curl -s -o $hole -m 10 --connect-timeout 10 $url -w %{http_code}"\n")
  		if [ $code -eq 200 ]
  		then
  			echo "测试链接正常"
  		else
  			echo "测试链接失败,重启tomcat"
  			kill -9 $pid  # 杀掉进程
  			sleep 5
  			rm -rf $cache # 清理tomcat缓存
  			$startSH
  		fi
  	else
  		echo "tomcat进程id不存在,重启中...."
  		rm -rf $cache
  		$startSH 
  	fi
  	echo "======================================"
  }
  
  doIt >> $log #执行函数,并打印日志