linux下tomcat总是会无故出现自动关闭的情况,在暂时无法解决该问题时,就需要一个东西能实时监测tomcat是否还正常的运行,若发现已关闭时,执行启动命令。
我们可以添加一个shell脚本来实现监测和启动功能:
1 # DEFINE 2 3 # 获取tomcat进程ID 4 TomcatID=$(ps -ef |grep tomcat |grep -w 'apache-tomcat-5.5.23'|grep -v 'grep'|awk '{print $2}') 5 6 # tomcat启动程序(这里注意tomcat实际安装的路径) 7 StartTomcat=/usr/local/tomcat/bin/startup.sh 8 TomcatCache=/usr/local/tomcat/work 9 10 # 定义要监控的页面地址 11 WebUrl=http://localhost:8080/ 12 13 # 日志输出 14 GetPageInfo=/www/logs/tomcatrestart/TomcatMonitor.Info 15 TomcatMonitorLog=/www/logs/tomcatrestart/TomcatMonitor.log 16 17 Monitor() 18 { 19 echo "[info]开始监控tomcat...[$(date +'%F %H:%M:%S')]" 20 if [ $TomcatID ];then # 这里判断TOMCAT进程是否存在 21 echo "[info]当前tomcat进程ID为:$TomcatID,继续检测页面..." 22 # 检测是否启动成功(成功的话页面会返回状态"200") 23 TomcatServiceCode=$(curl -s -o $GetPageInfo -m 10 --connect-timeout 10 $WebUrl -w %{http_code}) 24 if [ $TomcatServiceCode -eq 200 ];then 25 echo "[info]页面返回码为$TomcatServiceCode,tomcat启动成功,测试页面正常......" 26 else 27 echo "[error]tomcat页面出错,请注意......状态码为$TomcatServiceCode,错误日志已输出到$GetPageInfo" 28 echo "[error]页面访问出错,开始重启tomcat" 29 kill -9 $TomcatID # 杀掉原tomcat进程 30 sleep 3 31 rm -rf $TomcatCache # 清理tomcat缓存 32 $StartTomcat 33 fi 34 else 35 echo "[error]tomcat进程不存在!tomcat开始自动重启..." 36 echo "[info]$StartTomcat,请稍候......" 37 rm -rf $TomcatCache 38 $StartTomcat 39 fi 40 echo "------------------------------" 41 } 42 Monitor >>$TomcatMonitorLog
接下来可以使用crontab将脚本加入定时任务中,只需在terminal中输入以下:
1 crontab -e 2 1 * * * * /tomcat-restart.sh
输入crontab -e命令后,回车,接下来的使用方式就如同执行vi命令是一样的,想要输入时,单击【i】,输入完成后单击【Esc】,输入:wq即可保存输入。
此时,执行service crond restart;命令,即可执行脚本。
上面,我设置每过1分钟就要执行一次脚本。