linux定时任务监控tomcat状态

最近入了VPS,由于内存过小,tomcat进程经常被KILL掉,在百度之后发现可以写一个脚本来监控tomcat状态,当tomcat挂掉时,自动启动tomcat,并启用定时任务来执行它。

#下面是shell脚本

#!/bin/sh
# function:自动监控tomcat进程,挂了就执行重启操作

# 获取tomcat PPID
TomcatID=$(ps -ef | grep tomcat | grep -v 'grep' | awk '{print $2}')
# tomcat_startup
StartTomcat=/usr/local/tomcat/tomcat7/bin/startup.sh


#TomcatCache=/usr/local/tomcat/tomcat7/work

# 定义要监控的页面地址
WebUrl=http://lazyrabbit.tech/

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

Monitor()
{
  echo "[info]开始监控tomcat...[$(date +'%F %H:%M:%S')]"
  if [ "$TomcatID" ];then
    echo "[info]tomcat进程ID为:$TomcatID."
    # 获取返回状态码
    TomcatServiceCode=$(curl -s -o /dev/null --connect-timeout 10 -m 20 $WebUrl -w %{http_code})
    if [ $TomcatServiceCode -eq 200 ];then
        echo "[info]返回码为$TomcatServiceCode,tomcat启动成功,页面正常."
    else
        echo "[error]访问出错,状态码为$TomcatServiceCode,错误日志已输出到$GetPageInfo"
        echo "[error]开始重启tomcat"
        kill -9 $TomcatID  # 杀掉原tomcat进程
        sleep 3
        #rm -rf $TomcatCache # 清理tomcat缓存
        $StartTomcat
    fi
  else
    echo "[error]进程不存在!tomcat自动重启..."
    echo "[info]$StartTomcat,请稍候......"
    #rm -rf $TomcatCache
    $StartTomcat
  fi
  echo "------------------------------"
}
Monitor>>$TomcatMonitorLog

其中tomcat_startup 是tomcat启动脚本的路径,WebUrl是要监控的页面地址,使用时只需要修改它们就可以。

获取tomcat运行状态的命令

ps -ef | grep tomcat | grep -v 'grep' | awk '{print $2}'

访问页面返回状态码的命令

curl -s -o /dev/null --connect-timeout 10 -m 20 http://lazyrabbit.tech -w %{http_code}

#接下来设定定时任务

添加定时任务,每五分钟执行一次

crontab -e
*/5 * * * * /usr/local/tomcat/monitor.sh

查看定时任务

crontab -l

#可能出现的问题

Neither the JAVA_HOME nor the JRE_HOME environment variable is defined

At least one of these environment variable is needed to run this program

tomcat启动没有找到jdk环境,需要在tomcat/bin路径下的setclasspath.sh文件中配置jdk路径

export JAVA_HOME=/usr/local/java/jdk8
export JRE_HOME=/usr/local/java/jdk8/jre

/usr/local/tomcat/monitor.sh: Permission denied

这个脚本没有权限,需要设置权限

chmod 777 monitor.sh

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Linux环境中,可以通过编写脚本实现Tomcat的自启动。引用提供了一种在Linux环境中Tomcat开机自启的方式。下面是一个示例的脚本: 1. 创建一个名为tomcatRestart.sh的文件,并使用vim编辑该文件: ``` vim tomcatRestart.sh ``` 2. 在tomcatRestart.sh文件中写入以下代码(注意需要修改代码中的“tomcatPath”为你的Tomcat路径): ```bash #!/bin/bash /etc/profile tomcatPath="/usr/local/apache-tomcat-8.5.54" binPath="$tomcatPath/bin" echo "[info][$(date)]正在监控tomcat,路径:$tomcatPath" pid=$(ps -ef | grep tomcat | grep -w $tomcatPath | grep -v 'grep' | awk '{print $2}') if [ -n "$pid" ]; then echo "[info][$(date)]tomcat进程为:$pid" echo "[info][$(date)]tomcat已经启动,准备使用shutdown命令关闭" $binPath/shutdown.sh sleep 2 pid=$(ps -ef | grep tomcat | grep -w $tomcatPath | grep -v 'grep' | awk '{print $2}') if [ -n "$pid" ]; then echo "[info][$(date)]使用shutdown关闭失败,准备kill进程" kill -9 $pid echo "[info][$(date)]kill进程完毕" sleep 1 else echo "[info][$(date)]使用shutdown关闭成功" fi else echo "[info][$(date)]tomcat未启动" fi echo "[info][$(date)]准备启动tomcat" $binPath/startup.sh ``` 这段脚本会根据设置的Tomcat路径,监控Tomcat进程的状态。如果Tomcat已经启动,则使用shutdown命令关闭Tomcat,并等待一段时间后再次检查Tomcat进程的状态。如果Tomcat进程仍然存在,则使用kill命令强制关闭进程。最后,脚本会使用startup命令启动Tomcat。 通过编写这样的脚本并设置为开机自启动,在服务器重新启动后,Tomcat会自动启动并恢复原有的Web项目。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [LinuxTomcat开机自动启动](https://blog.csdn.net/wangli61289/article/details/37924785)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Tomcatlinux环境中开机自启(定时重启)](https://blog.csdn.net/Dai_Haijiao/article/details/129388194)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值