1 简介

  最近做了一个应用,访问多个大华的门禁出入设备,时间长了之后,就会报错:超过最大连接数。

  之后就会一致访问失败,直到重新启动tomcat

  暂时不知道什么原因,为了处理这个问题,只能先做个定时任务去查日志,出现这个错误就重新启动tomcat。

 

2 脚本

  在/usr/local/programs/shell_tomcat_log创建了一个auto-restart.sh

#! /bin/bash
source /etc/profile
tomcatdir=/usr/local/programs/apache-tomcat-8.5.88/

sys_log=catalina.out
err_log=/usr/local/programs/shell_tomcat_log/error_log/err.log
err_time=`date +%Y-%m-%d_%H:%M`
restart_log=/usr/local/programs/shell_tomcat_log/restart_log/restart-system.log


grep -E -i "超过最大连接数" /usr/local/programs/apache-tomcat-8.5.88/logs/catalina.out >$err_log
if [ -s $err_log ];then
         echo ${err_time}_${tomcatdir}"_超过最大连接数自动重启------" >>$restart_log
         mv /usr/local/programs/apache-tomcat-8.5.88/logs/catalina.out /usr/local/programs/apache-tomcat-8.5.88/logs/${err_time}.out

         /usr/local/programs/apache-tomcat-8.5.88/bin/shutdown.sh
         /usr/local/programs/apache-tomcat-8.5.88/bin/startup.sh

  else       echo ${err_time}_${tomcatdir}"_没有超过最大连接数异常" >>$restart_log
fi

  脚本说明

#! /bin/bash
source /etc/profile       //引入系统环境变量,主要是为了引进tomcat和jdk的环境变量
tomcatdir=/usr/local/programs/apache-tomcat-8.5.88/     //tomcat的安装目录

sys_log=catalina.out   //要查看的日志文件的名称
err_log=/usr/local/programs/shell_tomcat_log/error_log/err.log   //执行本定时,发现出现了那个错误时,记录到这里
err_time=`date +%Y-%m-%d_%H:%M`
restart_log=/usr/local/programs/shell_tomcat_log/restart_log/restart-system.log  // 执行定时时,记录执行的结果到这里


grep -E -i "超过最大连接数" /usr/local/programs/apache-tomcat-8.5.88/logs/catalina.out >$err_log   //查找tomca日志文件,查找那个错误,如果有,把这个错误记录到err_log(每次覆盖之前的)
if [ -s $err_log ];then    //如果err_log不为空,说明有那个错误
         echo ${err_time}_${tomcatdir}"_超过最大连接数自动重启------" >>$restart_log    // 输出日志到restart_log
         mv /usr/local/programs/apache-tomcat-8.5.88/logs/catalina.out /usr/local/programs/apache-tomcat-8.5.88/logs/${err_time}.out //把tomcat日志文件重命名为yyyy-MM-dd_HH_mm.out

         /usr/local/programs/apache-tomcat-8.5.88/bin/shutdown.sh   //停止tomcat
         /usr/local/programs/apache-tomcat-8.5.88/bin/startup.sh    //启动tomcat  启动时会自动生成新的catalina.out文件

  else       echo ${err_time}_${tomcatdir}"_没有超过最大连接数异常" >>$restart_log   //如果没有那个错误,输出日志到restart_log
fi

 

3 为它添加权限

chmod 777 auto-restart.sh

 

4 添加定时任务

  执行以下命令,进入编辑状态

crontab -e

  添加一下内容,一分钟执行一次

*/1 * * * *  /usr/local/programs/shell_tomcat_log/auto-restart.sh

  保存

  查看定时任务

crontab -l

 

5 查看日志文件

  /var/log/cron日志文件记录定时任务执行情况

tail -f /var/log/cron