1.在服务器上创建tomcatMonitor.sh
2.使服务器.sh文件生效chmod u+x *.sh
3.编辑tomcatMonitor.sh文件,if及fi必须成对出现,如果if then写在一行需要用;隔开
#!/bin/sh# 获取tomcat的PIDTOMCAT_PID=$(ps -ef | grep tomcat | grep -v 'tomcatMonitor' |grep -v 'grep' | awk '{print $2}')# tomcat的启动文件位置START_TOMCAT=/usr/local/tomcat6/bin/startup.sh# 需要监测的一个GET请求地址MONITOR_URL=http://localhost:8080/hnrwms/login.do?method=begin# 监测日志输出路径TOMCAT_MONITOR_LOG=/home/user/tomcatMonitor.logMonitor(){# 输出时间,注意date后有个空格echo "[$(date +'%F %H:%M:%S')]"echo "[info]$TOMCAT_PID,开始监控tomcat..."# 判断tomcat的PID是否存在,如不存在说明tomcat进程已关闭,注意[]前后,变量前后,都要有空格if [[ $TOMCAT_PID ]];thenecho "[info]当前tomcat的PID为:$TOMCAT_PID,继续监测页面..."# 向监测的地址发送请求并获取响应码HTTP_REPONSE_STATUS=$(curl -l -m 10 -o /dev/null -s -w %{http_code} $MONITOR_URL)# 如果响应码为200证明tomcat在正常启用if [[ $HTTP_REPONSE_STATUS -eq 200 ]];thenecho "[info]tomcat启动正常..."elseecho "[error]页面返回码为$HTTP_REPONSE_STATUS,开始重启tomcat..."# 结束tomcat进程kill -9 $TOMCAT_PID# 5秒后重启tomcatsleep 5$START_TOMCATfielseecho "[error]tomcat进程不存在,开始启动..."echo "[info]$START_TOMCAT,..."$START_TOMCATfiecho "监测执行完成"}# 输出到指定文件中Monitor>>$TOMCAT_MONITOR_LOG
4.编辑定时器
crontab -e
5.编辑定时器文件,设置每分钟执行一次,加入如下代码并保存
*/1 * * * * /home/user/tomcatMonitor.sh
6.重新加载定时器
systemctl reload crond.service
或者
service crond reload
7.输入如下代码可以看到tomcatManitor.sh已经在正常工作,如果log日志有多个tomcat进程应想办法过滤掉,不然会影响tomcat关掉进程和重启
tail tomcatMonitor.log
8.日志记录