linux下监控tomcat,自动重启

1、新建monitor.sh脚本文件,内容如下,根据实际情况进行修改

#!/bin/sh
# 获取tomcat进程ID  /usr/local/tomcat_ds_api
#TomcatID=$(ps -ef |grep tomcat |grep -w 'ps -ef |grep tomcat'|grep -v 'grep'|awk '{print $2}')  

# tomcat启动程序(这里注意tomcat实际安装的路径)  
#./etc/profile #此行必不可少,若少了,tomcat无法自动重启
StartTomcat=/usr/share/tomcat/bin/startup.sh #tomcat绝对路径的启动文件地址
StopTomcat=/usr/share/tomcat/bin/shutdown.sh  #tomcat绝对路径的关闭文件地址
TomcatCache=/usr/share/tomcat/bin/work #tomcat缓存

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

# 日志输出 
TomcatMonitorLog=/tmp/TomcatMonitor.log  
#JAVA_HOME=/usr/share/jdk1.8.0_201 #注释,预备开机重启没有java环境
#JRE_HOME=/usr/share/jdk1.8.0_201/jre
tomcat_path=/usr/share/tomcat/ #tomcat 完整路径

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

#监控脚本
Monitor() 
{  
  echo "[info]开始监控tomcat...[$(date +'%F %H:%M:%S')]"  
  if [[ $TomcatID ]];then # 这里判断TOMCAT进程是否存在  
    echo "[info]当前tomcat进程ID为:$TomcatID,继续检测页面..."  
    # 检测是否启动成功(成功的话页面会返回状态"200")  
    TomcatServiceCode=$(curl -I -m 10 -o /dev/null -s -w %{http_code} $WebUrl )  
    if [ $TomcatServiceCode -eq 200 ];then  
        echo "[info]页面返回码为$TomcatServiceCode,tomcat启动成功,测试页面正常......"  
    else  
        echo "[error]tomcat页面出错,请注意......状态码为$TomcatServiceCode,错误日志已输出到$GetPageInfo"  
        echo "[error]页面访问出错,开始重启tomcat"  
        kill -9 $TomcatID  # 杀掉原tomcat进程  
        sleep 3  
        rm -rf $TomcatCache # 清理tomcat缓存  
        $StopTomcat
        echo "[info] tomcat关闭成功"
        $StartTomcat  
        echo "[info] tomcat重启成功"
    fi  
  else  
    echo "[error]tomcat进程不存在!tomcat开始自动重启..."  
    echo "[info]$StartTomcat,请稍候......"  
    rm -rf $TomcatCache  
    $StartTomcat  
    echo "[info] tomcat启动成功"
  fi  
  echo "------------------------------"  
}  
Monitor>>$TomcatMonitorLog

将脚本放到任意目录下,此时,这个脚本文件是不可用的

##进入脚本目录
执行: 
    vi monitor
输入: 
    :set ff=unix
保存:
    :wq

2.测试Shell脚本monitor.sh是否允许成功
第一:执行脚本,如果报权限错误:

 

则执行:

sudo chmod 744 monitor.sh

第二:再次执行脚本
如果报/bin/bash^M:,坏的解释器,没有那个文件或目录:

则执行:

 sed -i 's/\r$//' monitor.sh

第三:执行脚本./monitor.sh
如果有\z字符输出不了:更改xshell字体

linux下监控tomcat,自动重启_第1张图片

3.把脚本加到crontab定时任务中
每分钟检查一次

*/1 * * * * /usr/share/tomcat/bin/monitor.sh

4、如果未安装crontab,先安装

yum install vixie-cron

   安装完成,可查看常用命令

/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
查看crontab服务状态:service crond status
手动启动crontab服务:service crond start
查看crontab服务是否已设置为开机启动,执行命令:ntsysv
在CentOS系统中加入开机自动启动:chkconfig --level 35 crond on

5、参考3添加定时任务

#添加定时任务
执行:
    crontab -e
再打开的文件输入:
    */1 * * * * /usr/share/tomcat/bin/monitor.sh
保存:
    :wq

6、查看启动的定时任务

crontab -l



参考链接:linux下实时监测tomcat关闭并启动_maying0124的博客-CSDN博客_linux 定时关闭tomcat
Linux下自动检测Tomcat宕机,并自动重启[通俗易懂] - 腾讯云开发者社区-腾讯云

你可能感兴趣的:(java,tomcat,linux,服务器)