1.
#!/bin/sh
# func:自动监控tomcat脚本并且执行重启操作
# 定义环境变量
export JAVA_HOME=/home/***/java/jdk1.8.0_101
export JRE_HOME=/home/***/java/jdk1.8.0_101/jre
export PATH=$JAVA_HOME/bin:$PATH
# DEFINE
#tomcat的进程数,由于脚本名称为monitor_tomcat.sh,所以排除了对monitor_tomcat的搜索
count=$(ps -ef|grep tomcat|grep -w 'apache-tomcat-8.5.35'|grep -v "grep"|grep -v "monitor_tomcat"|wc -l)
# tomcat启动程序(这里注意tomcat实际安装的路径)
StartTomcat=/home/****/tomcat/apache-tomcat-8.5.35/bin/startup.sh
# 定义要监控的页面地址
#WebUrl=http://127.0.0.1:8080
# 日志输出
TomcatMonitorLog=/home/****/logs/TomcatMonitor.log
Monitor()
{
echo "[info]开始监控tomcat...[$(date +'%F %H:%M:%S')]"
if [ ${count} -le 0 ] ; then
echo "[error]${date}tomcat进程不存在!tomcat开始自动重启...!"
$StartTomcat
fi
echo "------------------------------"
}
Monitor>>$TomcatMonitorLog
ps:刚开始监控的是tomcat的进程id(如下)
# 获取tomcat进程ID
#TomcatID=$(ps -ef |grep tomcat |grep -w 'apache-tomcat-8.5.35'|grep -v 'grep'|awk '{print $2}')
echo "[info]开始监控tomcat...[$(date +'%F %H:%M:%S')]"
if [ $TomcatID ];then # 这里判断TOMCAT进程是否存在
#echo "[info]当前tomcat进程ID为:$TomcatID,继续检测页面..."
else
echo "[error]tomcat进程不存在!tomcat开始自动重启..."
echo "[info]$StartTomcat,请稍候......"
$StartTomcat
fi
echo "------------------------------"
但是不知道什么原因,tomcat启动了多个,就是进程id超过1个后,if判断永远是不存在tomcatid,导致继续执行$StartTomcat。tomcat进程越来越多。
所以之后就用了进程数量的判断。