答:
涉及到tomcat的启停,可能与是否获取到Javahome有关系,换成这样试试,重启tomcat另写一个脚本。
autocheck.sh
#获取当前时间
current=$(date)
#检查是否有报错
if test $(cat /app/ICSR4TEST/javalog/kbdatainterface.log|tail -n 200|grep -c 'ERROR') -ne 0
then
echo "程序报错了,时间为:" $current >> /app/ICSR4TEST/aotuocheck.log
echo "程序报错了,时间为:" $current
#重启tomcat
sh /app/ICSR4TEST/tomcatStart.sh
#检查是否启动成功
while (true)
do
usetime=0
if test $(cat /app/ICSR4TEST/tomcat7/logs/catalina.out|tail -n 200|grep -c 'Server startup in') -eq 1
then
echo "重启成功"
break
else
sleep 220
usetime=`expr $usetime + 220`
if test $[usetime] -gt 500
then
echo "启动超时" $current
break
fi
fi
done
else
echo "现在正常" $current >> /app/ICSR4TEST//aotuocheck.log
echo "现在正常" $current
fi
tomcatStart.sh
#!/bin/sh
#设置环境变量
JAVA_HOME=/usr/java/jdk1.7.0_15
JRE_HOME=/usr/java/jdk1.7.0_15/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
#tomcat启动程序
startTomcat=/app/ICSR4TEST/tomcat7/bin/startup.sh
#tomcat启动脚本
TomcatID=$(ps -ef | grep tomcat | grep -w 'tomcat'|grep -v 'grep'|awk '{print $2}')
#杀掉原tomcat进程
if [[ $TomcatID -eq "" ]];
then
$startTomcat
else
kill -9 $TomcatID
sleep 15s
$startTomcat
fi
具体情况待观察,但我觉得已经是真相了。