Liunx通过shell脚本监控Tomcat服务器

mac2025-10-01  7

Tomcat有可能在运行过程中挂掉,可以写一个shell脚本检测服务器状态如果挂了就重新启动

监控Tomcat脚本如下

MonitorTomcat() { #StartTomcat=[Tomcat Home] echo "[info][`date "+%Y-%m-%d %H:%M:%S"`] 开始监控tomcat..." # 获取tomcat进程ID(其中[grep -w 'tomcat']代码中的tomcat需要替换为你的tomcat文件夹名) TomcatID=$(ps -ef |grep tomcat |grep -w 'tomcat'|grep -v 'grep'|awk '{print $2}') echo "[info][`date "+%Y-%m-%d %H:%M:%S"`] 当前tomcat进程ID:$TomcatID" if [ -n "$TomcatID" ];then echo "[info][`date "+%Y-%m-%d %H:%M:%S"`] 当前tomcat已经启动,继续监测是否运行正常..." #继续监测测试页面是否返回200状态码 curl -s -o /tmp/TomcatMonitor.Info -m 10 --connect-timeout 10 http://localhost:8080 -w %{http_code} TomcatServiceCode=$(curl -s -o $GetPageInfo -m 10 --connect-timeout 10 $WebUrl -w %{http_code}) echo "[info][`date "+%Y-%m-%d %H:%M%S"`] 测试页面状态码:$TomcatServiceCode" if [ $TomcatServiceCode -eq 200 ];then echo "[info][`date "+%Y-%m-%d %H:%M:%S"`] 页面返回码为$TomcatServiceCode,tomcat启动正常,测试页面正常" else echo "[error][`date "+%Y-%m-%d %H:%M:%S"`] tomcat页面出错,状态码为$TomcatServiceCode,错误日志输出到$GetPageInfo" echo "[error][`date "+%Y-%m-%d %H:%M:%S"`] 页面访问出错,开始重启tomcat" kill -9 $TomcatID sleep 5 rm -rf $TomcatCache $StartTomcat fi else echo "[error][`date "+%Y-%m-%d %H:%M:%S"`] 当前Tomcat没有启动,开始重启tomcat..." echo "[info][`date "+%Y-%m-%d %H:%M:%S"`] $StartTomcat,请稍等..." rm -rf $TomcatCache $StartTomcat fi echo "--------------[`date "+%Y-%m-%d %H:%M:%S"`]---------------------" } # 将输出日志写到文件中 MonitorTomcat>>/tmp/TomcatMonitor.log

脚本添加到Liunx定时任务中

安装:apt-get install cron (服务器环境下默认都会安装)

1、sudo crontab –e : 修改 crontab 文件. 如果文件不存在会自动创建。

脚本具体格式如下:

# daemon's notion of time and timezones. # # Output of the crontab jobs (including errors) is sent through # email to the user the crontab file belongs to (unless redirected). # # For example, you can run a backup of all your user accounts # at 5 a.m every week with: # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ # # For more information see the manual pages of crontab(5) and cron(8) # # m h dom mon dow command */5 * * * * bash /home/user/script/monitor.sh 设置每5分钟执行一次脚本

2、sudo crontab –l : 显示 crontab 文件。

3、sudo crontab -r : 删除 crontab 文件。

4、sudo crontab -ir : 删除 crontab 文件前提醒用户。

6,cron文件语法:

  分 小时 日 月 星期 命令  0-59 0-23 1-31 1-12 0-6 command (取值范围,0表示周日一般一行对应一个任务) “*”代表取值范围内的数字, “/”代表”每”, “-”代表从某个数字到某个数字, “,”分开几个离散的数字

7,有的系统中是crond不是cron,视具体情况使用

service cron start //启动服务

service cron stop //关闭服务

service cron restart //重启服务

service cron reload //重新载入配置

最新回复(0)