最近写了个简单的tomcat检测脚本。可以进行简单的进程和页面检测。

#!/bin/bash
# author:wangxingwei
# date:2015/9/1
# fun:检测tomcat进程和页面是否正常

StartTomcat=/home/aspire/apps/tomcat/bin/startup.sh
TomcatCache=/home/aspire/apps/tomcat/work
TomcatCheckLog=/home/aspire/logs/check_tomcat_log
TomcatName=tomcat
TomcatPort=8080

# 定义要监控的页面地址
WebUrl=http://localhost:$TomcatPort

StartTom() #启动tomcat函数
{
        echo "[info] 开始启动tomcat"
        $StartTomcat
        TomcatNum=`ps aux|grep $TomcatName|grep -Ev "grep|$0"|awk -F " " '{print $2}'|wc -l`
    if [ $TomcatNum -eq 0 ];then
        echo "[error]Tomcat启动失败"
    else
        echo "[info]Tomcat启动成功"

    fi
}

KillTom() #杀死tomcat函数
{
    echo "[info]开始杀死Tomcat进程"
    ps aux|grep $TomcatName|grep -Ev "grep|$0"|awk -F " " '{print $2}'|xargs kill -9 #杀掉tomcat进程
    TomcatNum=`ps aux|grep $TomcatName|grep -Ev "grep|$0"|awk -F " " '{print $2}'|wc -l` #检测是否杀掉
    if [ $TomcatNum -eq 0 ];then
        echo "[info]Tomcat 进程全部杀死"
    else
        echo "[error]Tomcat 进程没有被杀死"

    fi
}

CheckPage()
{
	CheckPageNum=3
    while [ $CheckPageNum -ne 0 ]
    do  
    	if [ $CheckPageNum -eq 1 ];then
    		echo "[info]开始进行最后一次页面检测"
    	else
			echo "[info]正在进行第$((4-$CheckPageNum))次页面检测............"
		fi
		sleep 10
    	TomcatServiceCode=$(curl -I -m 10  $WebUrl  -o /dev/null -s -w %{http_code})
    	if [ $TomcatServiceCode -eq 200 ];then
        	echo "[info]页面返回码为$TomcatServiceCode,tomcat启动成功,测试页面正常......"
			break
    	else
        	echo "[error]tomcat页面出错,请注意......状态码为$TomcatServiceCode,错误日志已输出到$GetPageInfo"
       	    echo "[error]页面访问出错,开始重启tomcat"
       	    KillTom  # 杀掉原tomcat进
			sleep 3
        	rm -rf $TomcatCache # 清理tomcat缓存 
        	StartTom
			CheckPageNum=$(($CheckPageNum-1))
    	fi
    done
}

CheckTomcat()
{
  echo "----start--------`date`--------------------------------"
  TomcatID=`ps aux| grep $TomcatName|grep -Ev "$0|grep"|awk -F " " '{print $2}'` 
  if [ -n "$TomcatID" ];then  # 这里判断TOMCAT进程是否存在
    echo "[info]当前tomcat进程ID为:$TomcatID,继续检测页面..."
    CheckPage
  else 
    echo "[error]tomcat进程不存在!tomcat开始自动重启..."
    echo "[info]$StartTomcat,请稍候......"
    rm -rf $TomcatCache
    $StartTomcat
    TomcatID=`ps aux| grep $TomcatName|grep -Ev "$0|grep"|awk -F " " '{print $2}'`
    echo "[info]Tomcat进程为$TomcatID,开始检测页面"
    CheckPage
  fi
  echo "----end----------`date`--------------------------------"
}

CheckTomcat >> $TomcatCheckLog