如何自动重启Tomcat异常的服务?

Bash

1 前言

一个问题,一篇文章,一出故事。
笔者几天前发现Tomcat会因为一个错误而停止服务,虽然进程还在,但是服务已经无任何回应,详细原因如下,

如何修复Tomcat antiJARLocking true警告?


笔者虽然有通知开发处理,但是修改可能有点延迟,于是笔者想给Tomcat写一个服务检查脚本,当异常时自动重启服务。

2 最佳实践

2.1 寻找异常的配置文件

vim ~/scripts/autoTomcatManager.sh

加入如下配置,

#!/bin/bash

tomcatLog="/var/log/tomcat/autoTomcatManager.log"
tomcatUrl="http://localhost:8080"
tomcatKeywords="<title>Apache Tomcat/8.5.81</title>"
tomcatUser="tomcat"
tomcatExt="jsvc"

if [ `curl -s "$tomcatUrl" | grep -i "$tomcatKeywords" | wc -l` = 1 ]; then
        exit
fi
echo `date +"%Y/%m/%d %H:%M:%S"`" Tomcat service failure!" > "$tomcatLog"
for ((;;)); do
        if [ `pgrep -u "$tomcatUser" "$tomcatExt" | wc -l` = 0 ]; then
                break
        fi
        for i in `pgrep -u "$tomcatUser" "$tomcatExt"`; do
                echo `date +"%Y/%m/%d %H:%M:%S"`" Cleanup Tomcat service!" > "$tomcatLog"
                kill "$i"
        done
        sleep 1
done
for ((;;)); do
        if [ `systemctl status tomcat.service | grep -i "Active:" | grep -i "Active: active (running)" | wc -l` = 1 ]; then
                break
        fi
        echo `date +"%Y/%m/%d %H:%M:%S"`" Start Tomcat service!" > "$tomcatLog"
        /usr/bin/systemctl start tomcat.service
        sleep 1
done
exit

2.2 创建服务触发

crontab -e

加入如下配置,

*/5 * * * * sh ~/scripts/autoTomcatManager.sh
没有评论

发表评论

Tomcat
如何修复Tomcat antiJARLocking true警告?

1 前言 一个问题,一篇文章,一出故事。 笔者今天遇到访问Tomcat服务遇到服务自动停止事宜,To …

Bash
如何自动挂载目录?

1 前言 一个问题,一篇文章,一出故事。 笔者需要写一个脚本定时挂载目录,但是AutoFS测试过骨兼 …

Bash
如何熟悉shell if?

1 基础知识 1.1 命令使用格式 1.2.1 获取命令帮助 man if 1.2.2 基本判断用法 …