守护进程监控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来測试服务是否有效。非常巧妙的应用!
同理也可做其它服务的监控。