tomcat 自动拉起脚本

项目上线之后,tomcat服务器有时候会莫名其妙的挂掉,利用shell写一个看门狗程序,监测tomcat异常关闭后,重启服务器。

1:新建脚本文件,赋予权限

touch start.sh  
chmod 755 start.sh

2:编写脚本文件

#!/bin/sh

# 自动监控tomcat并且在异常时执行重启操作


# 定义java环境变量
export JAVA_HOME=/usr/local/myApp/jdk1.8


# 获取端口号为8080的tomcat进程ID(考虑到有多个tomcat服务器,用8080关键词)
# grep -v grep 排除grep命令自带的进程id
# awk '{print $2}' 只保留结果中第二列的值
pid=$(ps -ef |grep 8080|grep -v grep|awk '{print $2}')


# tomcat启动脚本
start=/usr/local/myApp/tomcat8080/bin/startup.sh


# tomcat缓存
cache=/usr/local/myApp/tomcat8080/work


# tomcat链接地址
url=http://localhost:8080


# 监控时的日志输出
log=/tmp/my.log


#linux垃圾回收站
hole=/dev/null


function doIt()
{
  if [ $pid ]
    then
       echo "tomcat进程ID存在"
       code=$(curl -s -o $hole -m 10 --connect-timeout 10 $url -w %{http_code}"\n") #测试链接是否可以正常访问
       if [ $code -eq 200 ]
         then
           echo "测试链接正常"
       else
          echo "测试链接失败,重启tomcat"
          kill -9 $pid  # 杀掉进程
          sleep 5
          #rm -rf $cache # 清理tomcat缓存
          $start
     fi
  else
    echo "tomcat进程id不存在,重启中...."
    #rm -rf $cache  #清除缓存,tomcat跑的项目大的话,慎用,可能会出现意想不到的问题,
    $start
  fi
  echo "------------------------------"
}

doIt>>$log #执行函数,并打印日志

3:设置定时执行start.sh文件

crontab -e

添加内容:

*/30 * * * * /tmp/mySh/start.sh   #每30分钟执行一次

4:启动定时任务

service crond start   #启动定时任务

service crond status  #查看状态

service crond restart #重启定时任务

service crond stop    #停止定时任务

5:查看定时任务

crontab -l

注意:

1.某些自己用yum install xxx安装的系统命令,在shell脚本文件执行时可能会失效,这时候使用

which xxx 查看命令的安装目录,然后在shell脚本文件中使用绝对路径就ok了

2.你的脚本名称不能包含获取pid那一句命令中使用的关键字 

比如:pid=$(ps -ef |grep 8080|grep -v grep|awk '{print $2}')  那么你的脚本名称不可以包含8080关键字,否则会出问题。

参考文章:https://blog.csdn.net/zzq900503/article/details/50723191

猜你喜欢

转载自blog.csdn.net/qq_37936542/article/details/81086928