1.在服务器上创建一个脚本文件,我命名为tomcatMonitor.sh
编辑tomcatMonitor.sh文件,if及fi必须成对出现,如果if then写在一行需要用;隔开
#!/bin/sh
# 获取tomcat的PID
TOMCAT_PID=$(ps -ef|grep tomcat|grep -w ‘tomcat‘|grep -v ‘grep‘|awk ‘{print $2}‘)
# tomcat的启动文件位置
START_TOMCAT=/usr/local/tomcat7/bin/startup.sh
# 需要监测的一个GET请求地址
MONITOR_URL=http://localhost:8080/
# 监测日志输出路径
TOMCAT_MONITOR_LOG=/usr/local/tomcat7/logs/tomcatMonitor.log
Monitor()
{
# 输出时间,注意date后有个空格
echo "[$(date +‘%F %H:%M:%S‘)]"
echo "[info]开始监控tomcat..."
# 判断tomcat的PID是否存在,如不存在说明tomcat进程已关闭,注意[]前后,变量前后,都要有空格
if [[ $TOMCAT_PID ]];then
echo "[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 ]];then
echo "[info]tomcat启动正常..."
else
echo "[error]页面返回码为$HTTP_REPONSE_STATUS,开始重启tomcat..."
# 结束tomcat进程
kill -9 $TOMCAT_PID
# 5秒后重启tomcat
sleep 5
$START_TOMCAT
fi
else
echo "[error]tomcat进程不存在,开始启动..."
echo "[info]$START_TOMCAT,..."
$START_TOMCAT
fi
echo "监测执行完成"
}
# 输出到指定文件中
Monitor>>$TOMCAT_MONITOR_LOG
2.编辑定时器
crontab -e
编辑定时器文件,设置每分钟执行一次,加入如下代码并保存
*/1 * * * * /root/tomcatMonitor.sh
输入如下代码可以看到tomcatManitor.sh已经在正常工作
vim /usr/local/tomcat7/logs/tomcatMonitor.log