linux监听通过tomcat端口和接口自动重启

目录

1.安装插件

2.运行脚本

3.赋权

4.将脚本加入crontab

4.设置tomcat jdk环境变量

3.测试


测试方法:先kill掉进程,执行脚本,测试系统挂掉系统是否会重启,
在系统运行情况下执行脚本,查看是否会出现其他问题,没有问题再将脚本加入到定时任务。

1.安装插件

# 安装lsof脚本主要获取进程id,使用ps -ef 可能会获取多个
yum install lsof

2.运行脚本

#!/bin/sh
source /etc/profil
# 获取tomcat进程ID
TomcatID=$(lsof -i :9081)
# tomcat启动程序(这里注意tomcat实际安装的路径)
StartTomcat=/app/apache-tomcat-8.5.42/bin/startup.sh
# 定义要监控的接口返回地址
WebUrl=http://127.0.0.1:9081/interf/frontEnd/IC/IC001
# 日志输出
GetPageInfo=/app/reload/logs/TomcatMonitor.Info
TomcatMonitorLog=/app/reload/logs/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,TomcatID--->>$TomcatID"
        kill -9 $TomcatID  # 杀掉原tomcat进程
        echo "kill -9 tomcat ok"
        sleep 3
        echo "sleep 3 ok, starting Tomcat ..."
        $StartTomcat
        echo "msg notify ..."
        curl -d "mobile=18888888888&content=tomcat restart,place check" "http://127.0.0.1:9082/sendMsg"
        fi
  else
    echo "[error]tomcat进程不存在!tomcat开始自动重启..."
    echo "[info]$StartTomcat,请稍候......"
    $StartTomcat
    echo "msg notify ..."
    curl -d "mobile=18036364545&content=tomcat restart,place check" "http://127.0.0.1:9082/sendMsg"
 fi
  echo "------------------------------"
}
Monitor>>$TomcatMonitorLog

3.赋权

chmod a+x Monitor.sh

4.将脚本加入crontab,每两分钟执行一次

# 添加定时任务 reloadRent 两分钟启动一次
vi /etc/crontab
​
​
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
​
# For details see man 4 crontabs
​
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
*/2 * * * * root ./etc/profile;/bin/sh /app/reload/Monitor.sh reloadRent
​
​
# 添加完定时任务后,重启crond,使改动生效
service crond restart
​
#任务执行日志
tail -f /var/log/cron 
​
# 通过系统日志来查看Cron任务是否有执行过
grep "reloadRent" /var/log/cron

4.设置tomcat jdk环境变量

# 查看jdk的安装地址
# 命令1
which java
/usr/java/jdk1.8.0_271/bin/java
​
# 命令2 通过命令1输出内容,查看jdk的安装地址
ls -lrt /usr/java/jdk1.8.0_271/bin/java
​
-rwxr-xr-x 1 10143 10143 8712 9月  17 2020 /usr/java/jdk1.8.0_271/bin/java
​
# 命令3 通过命令2输出内容,拿到jdk的实际地址
ls -lrt /usr/java/jdk1.8.0_271/bin/java
-rwxr-xr-x 1 10143 10143 8712 9月  17 2020 /usr/java/jdk1.8.0_271/bin/java
​
​
# 正常配置环境变量,定时任务运行脚本不认需要直接修改tomcat bin 目录下的setclasspath.sh 问渐渐
# export JAVA_HOME=/usr/java/jdk1.8.0_271/jre/bin/java
# export CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar
# export PATH=$PATH:$JAVA_HOME/bin
​
# 进入tomcat执行目录
cd /app/apache-tomcat-8.5.42/bin/
​
vi setclasspath.sh
# 在文件最上面添加
export JAVA_HOME=/usr/java/jdk1.8.0_271
export JRE_HOME=/usr/java/jdk1.8.0_271/jre

3.测试

先手动kill掉tomcat进程
运行脚本
​
然后将脚本添加到定时任务中,手动kill掉然后看是否会执行

你可能感兴趣的:(服务器,tomcat,java,linux)