Linux运维专家群 QQ:419858299  技术成就梦想,欢迎小伙伴加入.


  1. vim selfrestart.sh #创建自启动脚本,将如下内容添加到文件中,脚本的值可能有所更改

#!/bin/sh

# func:自动监控tomcat脚本并且执行重启操作

# author:reed
# date:12/09/2012

# 定义环境变量
#PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/java/jdk1.5.0_11/bin
#export JAVA_HOME=/usr/java/jdk1.7.0_79
#export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
#export PATH=$PATH:$JAVA_HOME/bin

# DEFINE

# 获取tomcat进程ID
TomcatID=$(ps -ef |grep tomcat7 |grep -w 'tomcat7'|grep -v 'grep'|awk '{print $2}')

# tomcat启动程序(这里注意tomcat实际安装的路径)
StartTomcat=/usr/local/tomcat7/bin/./startup.sh


# 定义要监控的页面地址 
WebUrl=https://192.168.1.126

# 日志输出
GetPageInfo=/d20141212/log/TomcatMonitor.Info
TomcatMonitorLog=/d20141212/log/TomcatMonitor.log
Monitor( )
{
  echo "[info]开始监控tomcat7...[$(date +'%F %H:%M:%S')]"
   TomcatServiceCode=$(curl -I -m 10 -o /dev/null -s -w %{http_code}"\n"  $WebUrl)
    if [ $TomcatServiceCode -eq 200 ]; 
       then
        echo "[info]页面返回码为$TomcatServiceCode,tomcat7正在运行,测试页面正常......"
        echo
    elif [ -n "$TomcatID" ];#如果tomcat7进程为空,表示进程不存在
        then
        echo " tomcat7停止运行,tomcat7进程为空,页面返回码为$TomcatServiceCode,3秒后开始重新启动"| mail -s "tomcat status" xxx@qq.com
        echo " tomcat7停止运行,tomcat7进程为空,页面返回码为$TomcatServiceCode,3秒后开始重新启动"| mail -s "tomcat status" xxx@qq.com
        echo "[info]tomcat进程为空,页面返回码为$TomcatServiceCode "
        $StartTomcat
        echo
      else
        kill -9 $TomcatID
        echo " tomcat7停止运行,tomcat7进程不为空,页面返回码为$TomcatServiceCode,3秒后开始重新启动"| mail -s "tomcat status" xxx@qq.com
        echo " tomcat7停止运行,tomcat7进程不为空,页面返回码为$TomcatServiceCode,3秒后开始重新启动"| mail -s "tomcat status" xxx@qq.com
        echo "[info]tomcat7的进程是$TomcatID,已kill掉,页面返回码为$TomcatServiceCode "
        $StartTomcat
        echo
    fi
}
Monitor>>$TomcatMonitorLog

2.crontab -e #编辑定时任务,如图

wKioL1cV6aPQteEpAAA9H_pqEAU146.png每分钟执行一次。

3. 查看我们定义的/tmp/TomcatMonitor.log日志文件,我们可以看到具体的情况,可以进行测试,将tomcat停止掉。过1分钟后tomcat会自动启动,同时也可以查看邮件。