tomcat需要定时重启,以前遇到过这种情况,现在又有需求(说白了还是java项目内存泄露问题,我内心一万匹草泥马奔过)
我们都知道重启tomcat项目很方便,直接使用pkill java 然后start.sh命令重启即可(这里是centos系统)
脚本如下:

#!/bin/bash
#This script run at every 4days 00:00
#it is used to restart tomcat,because of mem leakage.
/bin/pkill java
Time=`date +%F`
sleep 3
a=`ps -ef|grep java|grep -v "grep"|wc -l`
if [ $a == 0 ];then
    /bin/bash /data/tomcat/bin/startup.sh
    echo " $Time tomcat chongqi success">/var/log/a.log  //这里用于监控脚本是否正常执行。
else
    echo " $Time tomcat chongqi error">/var/log/a.log
fi

但是我们将上述脚本加入到定时任务后,但是tomcat重启不生效。
一开始非常费解。后来想到是不是bash 根本无法识别JAVA的环境变量,因为以前写脚本就遇到过这类似问题。带着怀疑试着修改脚本。

#!/bin/bash
#This script run at every 4days 00:00
#it is used to restart tomcat,because of mem leakage.
JAVA_HOME=/usr/java/jdk1.8.0_101
PATH=$PATH:/usr/java/jdk1.8.0_101/bin
export JAVA_HOME PATH
/bin/pkill java
Time=`date +%F`
sleep 3
a=`ps -ef|grep java|grep -v "grep"|wc -l`
if [ $a == 0 ];then
    /bin/bash /data/tomcat/bin/startup.sh
    echo " $Time tomcat chongqi success">/var/log/a.log
else
    echo " $Time tomcat chongqi error">/var/log/a.log
fi

然后成功。