Linux系统中,自动监控Tomcat,Jar服务并且在异常时执行重启操作(CentOS 7)

Linux系统中,自动监控Tomcat,Jar服务并且在异常时执行重启操作(CentOS 7)

1.关于Tomcat服务

创建文件autoStart.log(用来存储日志信息),并赋予权限:

touch autoStart.log
chmod 777 autoStart.log

创建脚本autoStart.sh,并赋予权限:

touch autoStart.sh
chmod 777 autoStart.sh

在这里插入图片描述
编写autoStart.sh脚本相关代码:

# !/bin/sh
# 自动监控Tomcat并且在异常时执行重启操作
# @author:小辰哥哥

# (1)定义Java环境变量
export JAVA_HOME=/usr/local/java/jdk1.8.0_131

# (2)相关属性详解
# grep -w 'tomcat' 代码中的tomcat需要替换为自己的tomcat文件夹名(确保唯一性)
# grep -v 'grep'   为了去除包含grep的进程行,避免影响最终数据的正确性
# awk '{print $2}' 只保留结果中第二列的值
pid=$(ps -ef |grep tomcat |grep -w 'apache-tomcat-8.5.35'|grep -v 'grep'|awk '{print $2}'|awk 'NR == 1')

# (3)Tomcat启动脚本
start=/home/zhouziyu/Work/apache-tomcat-8.5.35/bin/startup.sh

# (4)Tomcat缓存
cache=/home/zhouziyu/Work/apache-tomcat-8.5.35/work

# (5)Tomcat链接地址(Https会失败)
url=http://localhost:8087

# (6)监控时的日志输出
log=/home/zhouziyu/Work/autoStart.log

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

function doIt()
{
  if [ $pid ]
    then
       echo "Tomcat进程ID存在:$pid"
	   # 测试链接是否可以正常访问
	   # -I 仅测试HTTP头
       # -m 10 最多查询10s
       # -o /dev/null 屏蔽原有输出信息
       # -s silent
       # -w %{http_code} 控制额外输出
       code=$(curl -s -o $hole -m 10 --connect-timeout 10 $url -w %{http_code}"\n") 
       if [ $code -eq 200 ]
         then
           echo "测试链接正常,Tomcat状态正常"
       else
          echo "测试链接失败,重启Tomcat:$code"
		  # 杀掉进程
          kill -9 $pid  
          sleep 5
		  # 清除缓存,tomcat跑的项目大的话,慎用,可能会出现意想不到的问题
		  # 清理Tomcat缓存
          # rm -rf $cache
          $start
     fi
  else
    echo "Tomcat进程ID不存在,重启中...."
	# 清除缓存,tomcat跑的项目大的话,慎用,可能会出现意想不到的问题
    # rm -rf $cache  
    $start
  fi
  starttime=$(date +%Y-%m-%d\ %H:%M:%S)
  echo "当前服务器时间:$starttime"
  echo "####################################"
}

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

查看当前Tomcat进程状态:

# 注意:3626是apache-tomcat-8.5.99的进程号
ps -ef|grep tomcat

在这里插入图片描述
编写定时任务(然后保存退出):

crontab -e
*/1 * * * * /home/zhouziyu/Work/autoStart.sh   #每1分钟执行一次

在这里插入图片描述
在这里插入图片描述
观察日志信息:

cat autoStart.log

在这里插入图片描述
Tomcat可以正常访问:
在这里插入图片描述
再次观察日志信息:
在这里插入图片描述
再次查看Tomcat进程状态:
在这里插入图片描述

2.关于Jar服务

创建文件autoStart2.log(用来存储日志信息),并赋予权限:

touch autoStart2.log
chmod 777 autoStart2.log

创建脚本autoStart(Jar).sh,并赋予权限:

touch autoStart(Jar).sh
chmod 777 autoStart(Jar).sh

在这里插入图片描述
编写autoStart(Jar).sh脚本相关代码:

# !/bin/sh
# 自动监控Jar服务并且在异常时执行重启操作
# @author:小辰哥哥

# (1)相关属性详解
# grep -w 'java'   代码中的java需要替换为自己的Jar文件名(确保唯一性)
# grep -v 'grep'   为了去除包含grep的进程行,避免影响最终数据的正确性
# awk '{print $2}' 只保留结果中第二列的值
pid=$(ps -ef |grep java |grep -w 'operate-ticket-0.0.1-SNAPSHOT.jar'|grep -v 'grep'|awk '{print $2}'|awk 'NR == 1')

# (2)Jar启动脚本
start=nohup /usr/local/java/jdk1.8.0_131/bin/java -jar /home/zhouziyu/Work/operate-ticket-0.0.1-SNAPSHOT.jar > jar.log &

# (3)Jar接口测试地址(Https会失败)
url=http://192.168.8.108:9090/OperateTicket/StandardController/test

# (4)监控时的日志输出
log=/home/zhouziyu/Work/autoStart2.log

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

function doIt()
{
  if [ $pid ]
    then
       echo "Jar服务进程ID存在:$pid"
	   # 测试链接是否可以正常访问
	   # -I 仅测试HTTP头
       # -m 10 最多查询10s
       # -o /dev/null 屏蔽原有输出信息
       # -s silent
       # -w %{http_code} 控制额外输出
       code=$(curl -s -o $hole -m 10 --connect-timeout 10 $url -w %{http_code}"\n") 
       if [ $code -eq 200 ]
         then
           echo "测试链接正常,Jar服务状态正常"
       else
          echo "测试链接失败,重启Jar服务:$code"
		  # 杀掉Java服务进程
          kill -9 $pid  
          sleep 5
          $start
     fi
  else
    echo "Jar服务进程ID不存在,重启中...."
    $start
  fi
  starttime=$(date +%Y-%m-%d\ %H:%M:%S)
  echo "当前服务器时间:$starttime"
  echo "####################################"
}

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

查看当前Jar服务进程状态:

# 注意:并不存在Jar服务的进程号
ps -ef|grep java

在这里插入图片描述
编写定时任务(然后保存退出):

crontab -e
*/1 * * * * /home/zhouziyu/Work/autoStart(Jar).sh   #每1分钟执行一次

在这里插入图片描述
在这里插入图片描述
观察日志信息:

cat autoStart2.log

在这里插入图片描述
访问接口:
在这里插入图片描述
再次观察日志信息:
在这里插入图片描述
再次查看Jar服务进程状态:
在这里插入图片描述


总结

每天一个提升小技巧!!!

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小辰哥哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值