#/bin/bash
#脚本可写入到自动任务中,执行周期可根据tomcat起停时间长短来定,如下,每天0点到20点之间每隔10分钟检查一次
#echo "*/10 0-20 * * * root /usr/local/tomcat/admin-server/script/tomcat_check.sh >> /usr/local/tomcat/admin-server/script/tomcat_check.log 2>&1" >> /etc/crontab
# */01 * * * * root /mydirfiles/script/tomcat_check.sh >> /mydirfiles/script/tomcat_check.log 2>&1
# */01 * * * * root flock -xn /mydirfiles/script/tomcat_check.sh -c /mydirfiles/script/tomcat_check.sh >> /mydirfiles/script/tomcat_check.log 2>&1
# */01 * * * * root flock -xn /mydirfiles/script/tomcat_check.lock -c /mydirfiles/script/tomcat_check.sh >> /mydirfiles/script/tomcat_check.log 2>&1
cd /usr/local/tomcat/admin-server/script
#删除之前已下载的首页
rm -rf getCaptcha?x=*
rm -rf hs_err_pid*
rm -rf replay_pid*
#下载首页,失败后最多偿试3次,每次间隔10秒
wget -T 10 -t 3 -q http://127.0.0.1:9999/xmanager-admin-api/captcha/getCaptcha?x=1
if [ ! -e getCaptcha?x=1 ]; then #判断首页是否下载成功,如果成功,则执行接下来的任务,否则执行else后的任务。
date
#export JAVA_HOME=/usr/java/jdk1.7.0_80
#export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
#export PATH=$JAVA_HOME/bin:/usr/local/tengine/sbin:$PATH
echo "tomcat restarting."
/usr/local/tomcat/admin-server/bin/shutdown.sh #关闭tomcat
sleep 10 #等待tomcat关闭,一般是1~150s不等
port=9999
#根据端口号查询对应的pid
pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }');
#杀掉对应的进程,如果pid不存在,则不执行
if [ -n "$pid" ]; then
pgrep java | xargs kill -9 $pid;
fi
#pgrep java | xargs kill -s 9 #等待时间结束后,偿试强制结束tomcat进程
sleep 5
/usr/local/tomcat/admin-server/bin/startup.sh
sleep 60 #等待tomcat启动,一般是1~150s不等
echo "tomcat restarted."
else
date
echo "checked. server is normal " #首页下载成功,提示已检查
fi
cd /usr/local/tomcat/admin-server/script
rm -f tomcat_check.lock