背景:tomcat进程存在,但是访问页面的时候出现http 400错误,由于本人对tomcat知之甚少,故写了shell脚本,判断当出现http400错误的时候就重启tomcat.
思路:从内网用wget下载网页,如果wget-log中有ERROR字样,就重启tomcat,没有表示tomcat正常。本人非root用户,故脚本中用到了sudo命令。当然如果tomcat进程不存在,wget-log就有refuse记录,同理可以判断tomcat进程是否存在。最后加到crontab中即可。
#!/bin/sh
#It is used to check tomcat is ok or not
#Made by xuyp 2009-09-18
cd
test -e "index.html" && rm -rf "index.html"
test -e "wget-log" && rm -rf "wget-log"
wget -b http://127.0.0.1
sleep 5
tom=`cat wget-log| grep "ERROR"`
if [ -z "$tom" ];then
echo "`date +%F' '%r`The tomcat is OK,now"
else echo "`date +%F' '%r` The tomcat is down"
cd /usr/local/tomcat/bin
sudo ./shutdown.sh
sleep 20
sudo ./startup.sh
sleep 20
tompid=`ps -efw | grep java | grep tomcat | grep -v grep |awk '{print $2}'|sed -n '1p'`
test -z "$tompid" && echo "`date +%F' '%r` Tomcat restart fail!" || echo "`date +%F' '%r` Tomcat restart OK!"
fi