tomcat在运行中总会不定时的挂掉。所以我想检测tomcat的状态,如果发现tomcat停止就重新启动tomcat。
第一步:书写脚本,在脚本里面完成检测tomcat和重新启动tomcat等操作;
运行命令vim tomcat.sh
下面直接贴脚本
#!/bin/bash
#获取tomcat的pid进程号
TomcatPid=$(ps -ef | grep tomcat | grep 80 | grep -w 'tomcat' | grep -v 'grep' | awk '{print $2}')
#查看tomcat的进程是否存在
TomcatCount=$(ps -ef | grep tomcat | grep 80 | grep -w 'tomcat' | grep -v 'grep' | wc -l)
#启动tomcat
startTomcat=/usr/local/tomcat/bin/startup.sh
#监控页面
webUrl=http://xxx/dict/ar-zh
#日志输出
TomcatMonitorLog=/home/tomcatMonitor.log
Time=$(date "+%Y-%m-%d %H:%M:%S")
#检测要监控的页面是否启动成功,如果成功的话返回的值是200
TomcatServiceCode=$(curl -I -m 10 -o /dev/null -s -w%{http_code} $webUrl)
Monitor()
{
echo "开始监控tomcat........"$Time
if [ $TomcatCount -ge 0 ];then #判断tomcat的进程是否存在
if [ $TomcatServiceCode -ne 200 ];then
echo "因为tomcat停止因异常停止,即将杀死tomcat进程......."$Time
kill -9 $TomcatPid
sleep 3
rm -rf /usr/local/tomcat/work/
echo "即将重新启动tomcat......"$Time
$startTomcat
echo "重新启动完成**********"$Time
else
echo "程序正在运行,无需操作....."$Time
fi
else #tomcat进程不存在的情况
echo "tomcat进程不存在......"$Time
echo "tomcat开始自启动....."$startTomcat
fi
echo "======================================================================="
}
说明一下:
#获取tomcat的pid进程号,在书写这个的时候需要注意的是80代表的是你要检测的tomcat的端口,引号中的tomcat代表的是你linux中安装的tomcat文件的文件名称
TomcatPid=$(ps -ef | grep tomcat | grep 80 | grep -w 'tomcat' | grep -v 'grep' | awk '{print $2}')
#查看tomcat的进程是否存在。单独运行里面的命令,可以查看返回值。注意端口和你的文件名
TomcatCount=$(ps -ef | grep tomcat | grep 80 | grep -w 'tomcat' | grep -v 'grep' | wc -l)
#启动tomcat,这个是你安装的tomcat的对应的statup.sh文件的路径
startTomcat=/usr/local/tomcat/bin/startup.sh
#监控页面,这个是你项目访问的首页,监控的页面
webUrl=http://xxx/dict/ar-zh
#日志输出,shell脚本日志输出的位置
TomcatMonitorLog=/home/tomcatMonitor.log
#获取当前时间
Time=$(date "+%Y-%m-%d %H:%M:%S")
#检测要监控的页面是否启动成功,如果成功的话返回的值是200。使用这个命令之前先单独运行一下里面的命令,看看tomcat在正常运行的情况下返回值是否是200,要注意一下。
TomcatServiceCode=$(curl -I -m 10 -o /dev/null -s -w%{http_code} http://xxx/dict/ar-zh)
第二步:书写完脚本之后,给脚本权限(我的脚本的名字叫tomcat.sh)
chmod 777 tomca.sh (我是直接给了777)
第三步:使用crontab,定时执行
运行命令crontab -e
在打开的文件中输入下面内容
*/5 * * * * /usr/local/tomcat.sh
保存退出即可。要注意的是你脚本的路径