Linux下shell脚本监控Tomcat的状态并实现自动启动

Stella981
• 阅读 874

最近公司需要在Linux下监控tomcat的服务,一旦tomcat服务存在异常或者宕机,重启tomcat保证服务的正常运行,由于Linux下有Shell脚本可以实现此效果,下面是Linux下shell脚本监控Tomcat的状态并实现自动启动的步骤。

1.编写Shell脚本monitor.sh

#!/bin/sh

# func:自动监控tomcat脚本并且执行重启操作
# author:EagleHao
# date:2018-04-08
# DEFINE

# 获取tomcat进程ID(其中[grep -w 'tomcat']代码中的tomcat需要替换为你的tomcat文件夹名)
TomcatID=$(ps -ef |grep tomcat |grep -w 'tomcat'|grep -v 'grep'|awk '{print $2}')

# tomcat启动程序(这里注意tomcat实际安装的路径)
StartTomcat=/opt/tomcat/bin/startup.sh
TomcatCache=/opt/tomcat/work

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

#日志输出
GetPageInfo=/tmp/TomcatMonitor.Info
TomcatMonitorLog=/tmp/TomcatMonitor.log

Monitor()
{
echo "[info]开始监控tomcat...[$(date +'%F %H:%M:%S')]"
if [ $TomcatID ];then #这里判断Tomcat进程是否存在
echo "[info]当前tomcat进程ID为:$TomcatID,继续检测页面..."
# 检测是否启动成功(成功的话页面会返回状态"200")
TomcatServiceCode=$(curl -s -o $GetPageInfo -m 10 --connect-timeout 10 $WebUrl -w %{http_code})
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缓存
$StartTomcat
fi
else
echo "[error]tomcat进程不存在!tomcat开始自动重启..."
echo "[info]$StartTomcat,请稍候..."
rm -rf $TomcatCache
$StartTomcat
fi
echo "--------------------------"
}
Monitor>>$TomcatMonitorLog

2.测试Shell脚本monitor.sh是否允许成功

第一:执行脚本./monitor.sh

如果报权限错误:chmod 777 monitor.sh

第二:执行脚本./monitor.sh

如果报/bin/bash^M:,坏的解释器,没有那个文件或目录  :sed -i 's/\r$//' build.sh

第三:执行脚本./monitor.sh

如果有\z字符输出不了:更改xshell字体

Linux下shell脚本监控Tomcat的状态并实现自动启动

3.把脚本加到crontab定时任务中

每分钟检查一次

打开/etc/crontab文件添加定时任务

Linux下shell脚本监控Tomcat的状态并实现自动启动

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
Shell 脚本自动监控重启 httpd 服务并记录日志
环境CentOS7思路设置一个死循环,执行脚本时开始启动httpd服务,同时开始记录当前时间,然后输出到日志中,再sleep14秒,之后马上开始停止httpd服务,同时开始记录当前时间,然后输出到日志中。重复这个死循环。代码用vitest.sh打开文件,按i进行编辑,输入下面代码:
Stella981 Stella981
3年前
Eg挨蒙—Zabbix监控进程占cpu和内存大小及批量监控端口
监控简介:通过shell脚本的方式,实现对进程占cpu百分比和内存大小的监控,通过python脚本方式,实现批量监控服务器端口。一、监控进程占cpu的百分比和内存的大小1、在agent端编写脚本\root@monitorsbin\$cat/usr/local/zabbix/scripts/processtatus.sh!/
Stella981 Stella981
3年前
Shell 脚本实现 Linux 系统监控
一、实验介绍1.1实验内容本课程实现shell脚本监控系统的各项参数,并可以将脚本加入系统环境中,可以直接在终端里执行。还添加了几个参数,一个脚本可以执行不同的操作。1.2知识点本实验涵盖以下知识点:1.Bash脚本编程2.如何获取Linux系统信息3.如何实时获取Linux
Stella981 Stella981
3年前
Shell脚本编程——基础篇
Shell脚本概念1、将要执行的命令按顺序保存到一个文本文件2、给该文件可执行权限,便可运行3、可结合各种shell控制语句以完成更复杂的操作Shell脚本应用场景1、重复性操作2、批量事务处理3、自动化运维4、服务运行状态监控5、定时任务执行完善的shell脚本
Easter79 Easter79
3年前
Tomcat脚本简要分析
Tomcat的脚本在bin目录下,有:catalina、startup、shutdown、setenv、digest、version等。其中catalina脚本用于启动和关闭tomcat服务器,是tomcat中最关键的脚本。startup脚本和shutdown脚本等都是使用了不同的参数调用了catalina脚本:startup脚
Stella981 Stella981
3年前
Linux系统Shell编程——脚本编写思路与过程
!(https://oscimg.oschina.net/oscnet/b5650333a00146298052e4da35a0746d.gif"兔子红箭头引导关注")Linux系统Shell编程——脚本编写思路与过程“前段时间有小伙伴问我一些问题,涉及到shell脚本的编写问题,事后,我深入思考了下,实际生产环境的确也
Stella981 Stella981
3年前
Linux下微服务系统开机自启(非docker版)——解决异常、常规断电后等待人工运维问题
解决的问题:异常/常规断电或者操作系统重启后,研发的系统需要等待人工启动服务,否则无法使用Linux下微服务系统开机自启实现方式是将自定义的sh脚本命令加入开机启动项实现,这样有助于操作系统重启时不需要人为启动相关服务,实现无人值守下的异常重启,实现步骤分为三步:编写子脚本,用于启动各类jar包、war包、软件等编写启动脚本