java假死,但是进程还在,可以通过判断一段时间内日志文件是否有变化,来判断java是否假死
shell脚本如下:
#!/bin/bash
#
#通过比较五分钟前后,日志文件md5值是否相同,来判断日志文件是否有变化,从而判断java是否假死
#请根据实际情况,修改环境变量,项目路径
#加入计划任务执行
#
function RestartJava()
{
export JAVA_HOME=/opt/apps/jdk1.6.0_41
export PATH=$PATH:/opt/apps/jdk1.6.0_41/bin
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/jre/lib/rt.jar
JavaPath="/opt/apps/apache-tomcat-6.0.37"
JavaId=$(ps -ef|grep java |grep $JavaPath |grep -v "grep" |awk '{print $2}')
kill -9 $JavaId
cd $JavaPath/bin && /bin/bash startup.sh
}
#while [ 1 ]
#do
First=`md5sum /opt/shell/nohup.out |awk '{print $1}'`
sleep 300
Second=`md5sum /opt/shell/nohup.out |awk '{print $1}'`
if [[ $First == $Second ]]
then
echo "start restart java" >/dec/null 2>&1
RestartJava
fi
#done