守护进程监控tomcat并自己主动重新启动

昨天的tomcat问题。一天挂了3,4回,受不了了决定写个监控tomcat进程并自己主动重新启动的脚本!

在网上查资料。主要分为两类:一类是定时重新启动tomcat,这当然不是我须要的。还有一类是监控并重新启动。只是也有好几个版本号。我综合比較后(主要是这篇http://hi.baidu.com/tedzhangzhe/item/4afd87aa1cf2d1f215329b8a),删除了些不须要的内容,并将代码改动例如以下:

###########################################
# author
# date 2014/05/19
# update 2014/05/19
# Automatic detection and restart tomcat
############################################ 


echo ========================================
date
cd /usr/local/share/tomcat7/bin/script
rm -f main.jsp
 wget -T 10 -t 3 -q http://10.0.210.100:8080/pmonitor/main.jsp
if [ ! -e main.jsp ]; then
        echo "restart tomcat."
        export JAVA_HOME=/usr/local/java/jdk1.6.0_37

        /usr/local/share/tomcat7/bin/shutdown.sh
        sleep 10
        kill -9 `ps aux|grep "/usr/local/share/tomcat7"|grep -v grep|awk '{prin        t $2}'`
        sleep 5
        /usr/local/share/tomcat7/bin/startup.sh
else
        echo "checked."
fi

1、将代码拷贝到monitor.sh的文档中,并放入usr/local/share/tomcat7/bin中(路径是自己选的。若改动路径,将代码中相关内容替换为新路径即可了)。

2、sudo chmod a+x monitor.sh加权限。

3、sudo crontab -e,在文档末尾加入*/2 * * * * /usr/local/share/tomcat7/bin/monitor.sh。意思是全天范围内每2分钟执行一次这个脚本。

当中,我明明在.bashrc文件里设置过了JAVA_HOME环境变量,但是执行时还是报错。提示Neither the JAVA_HOME nor the JRE_HOME environment variable is defined。所以不得已在代码中增加了export JAVA_HOME=/usr/local/java/jdk1.6.0_37又定义了一遍,有知道为什么的请不吝赐教哈。

測试环节:人工关闭tomcat后。2分钟后ps -ef |grep tomcat。又自己主动启动了,成功。


总结一下,这篇代码的方法不是直接监控tomcatport,而是通过wget传输文件来測试。我们都知道wget是能够走http协议的,正好能够经过tomcat来測试服务是否有效。非常巧妙的应用!

同理也可做其它服务的监控。


posted on 2017-04-23 15:02  blfbuaa  阅读(305)  评论(0编辑  收藏  举报