Linux 定时检查 Tomcat 运行状况进行重启

Linux 定时检查 Tomcat 运行状况

近来某些客户服务器会出现停电或者断网等现象,于是找度娘综合了各种资料,汇总出下面的检测重启脚本。
原理:使用 shell 脚本,通过 tomcat 端口号检查 tomcat 是否在运行,如果不在运行则进行启动,使用 linux 自带的 crontab 定时任务做检查。

一、根据 tomcat 端口号定时检查Tomcat 是否运行,不在运行则进行重启

1、windows 上创建一个txt文件,之后更改文件后缀为“.sh”的可执行文件,文件内容如下

#!/bin/bash 

# 初始化 java 环境变量
. /etc/profile

# tomcat 路径
tomcat=/usr/local/tomcat/tomcat

# 启动文件路径
StartTomcat=$tomcat/bin/startup.sh

# tomcat端口
port=8080

echo "......begin check tomcat port is:$port status,if stop then start"


# 根据tomcat 端口号获取pid
pid=`netstat -anp|grep $port|awk '{printf $7}'|cut -d/ -f1`

# tomcat pid 不为空,则杀进程在启动,为空,直接启动
if [ -n "$pid" ];then
   echo "port is:$port tomcat running ,pid is: $pid"
else
    echo "port is:$port tomcat not running,begin start "
    $StartTomcat 
    sleep 3
    pid=`netstat -anp|grep $port|awk '{printf $7}'|cut -d/ -f1`
    echo "port is:$port tomcat started sucess,pid is $pid" 
fi

echo "......end chekc tomcat port is:$port status"

2、创建好之后将文件通过 Xftp 上传到服务器上tomcat bin 目录下

3、为此脚本授权

chmod 777 checkRestart.sh

4、设置定时执行checkRestart.sh脚本

crontab -e

5、添加内容如下,为了查看效果,我这里设置每隔一分钟自动执行上面创建的脚本
( crontab时间格式内容
* * * * * command
M H D m d command
分 时 日 月 周 命令)

*/2 * * * * /usr/local/tomcat/tomcat/bin/checkRestart.sh

6、重启定时任务的服务

service crond restart

7、查看当前系统已经执行的定时任务

	tail -f /var/log/cron

	#查看最近执行的定时任务的详细状况
	tail -f /var/spool/mail/root

脚本执行过程中可能会出现如下错误
在这里插入图片描述
这个是需要jdk 环境变量配置,脚本开头加上这个就好了

# 初始化 java 环境变量
. /etc/profile

查看 linux crontab 日志

tail -f /var/spool/mail/root

在这里插入图片描述

注:脚本中检测 tomcat pid 的代码也可换成

pid=`ps aux | grep tomcat | grep -v grep | grep -v restart | grep -v Restart | awk '{print $2}'`

这种在多个tomcat 运行时会存在问题,会直接检测出所有tomcat 的pid,如果只需要针对单独的tomcat,最好还是使用端口号来检查 pid

二、通过 tomcat 端口定时检查 Tomcat 是否运行,运行则重启,不运行则进行启动

1、在之前的脚本上做些改动即可

#!/bin/bash 

#初始化 java 环境变量
. /etc/profile

#tomcat 路径
tomcat=/usr/local/tomcat/tomcat

#启动文件路径
StartTomcat=$tomcat/bin/startup.sh

#tomcat端口
port=8080

echo "......开始检测端口号为:$port 的tomcat的运行状态,如果运行则重启,否则直接启动"

#根据tomcat 端口号获取pid
pid=`netstat -anp|grep $port|awk '{printf $7}'|cut -d/ -f1`


#tomcat pid 不为空,则杀进程在启动,为空,直接启动
if [ -n "$pid" ];then
   echo "端口号为:$port 的tomcat运行中,进程号为: $pid"
   echo "开始kill端口号为:$port 的tomcat进程"
   kill -9 $pid  
   sleep 1  
   echo "端口号为:$port 的tomcat进程已经kill,开始启动tomcat" 
   $StartTomcat 
   sleep 3
   pid=`netstat -anp|grep $port|awk '{printf $7}'|cut -d/ -f1`
   echo "端口号为:$port 的tomcat重启成功,进程号为 $pid" 
else
    echo "端口号为:$port 的tomcat未运行,开始启动 "
    $StartTomcat 
    sleep 3
    pid=`netstat -anp|grep $port|awk '{printf $7}'|cut -d/ -f1`
    echo "端口号为:$port 的tomcat启动成功,进程号为 $pid" 
fi

echo "......端口号为:$port 的tomcat的运行状态检测完毕"```

2、crontab 定时任务更改
在这里插入图片描述

3、重启 crontab 定时任务

4、查看 linux crontab 日志

tail -f /var/spool/mail/root

在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值