原创

Linux服务器A开机执行脚本远程监测服务器B下的tomcat

此文章是在默认已经安装好tomcat的情况下进行的,若没安装,请参考这篇文章
http://114.115.219.248:8443/article/8

大体思路:

  1. 创建简单shell脚本并能执行
  2. 定时去执行shell
  3. 服务器A开机自动启动
  4. 编辑脚本能够监测服务器B下的tomcat,若不在运行状态则启动服务器A的的tomcat,若在运行状态则监测本服务器的tomcat是否开启,若开启则关闭

具体操作步骤:

1. 创建简单shell脚本并能执行

    1)touch checktomcat.sh
    2)vim checktomcat.sh
        键入i
        插入#!/bin/sh
        echo hello world;
        键入:
        esc
        :
        wq
    3)chmod 700 checktomcat.sh
    4) 执行./ checktomcat.sh

2. 定时任务执行脚本
首先要安装crontabs
关于crontabs的连接以及说明
https://blog.csdn.net/qq_39131177/article/details/79051711

1) yum install vixie-cron //下载安装
2) yum install crontabs //下载安装
3) service crond start //启动服务
4) /1 /root/checkTomcatYesOrNo/checktomcat.sh lumus nedp //每隔一分钟启动一次checktomcat.sh脚本,输出日志在/var/mail/root中可以查看
5) 若不用可以关闭 service crond stop //关闭服务
6) chkconfig –level 35 crond on //开机自动启动
*3. 更改本机上的tomcat

修改Tomcat/bin/startup.sh ,在其下面添加

export JAVA_HOME=/usr/local/jdk
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:
export PATH=$PATH:$JAVA_HOME/bin
export CATALINA_HOME=/root/tomcat/apache-tomcat-7.0.52
/root/tomcat/apache-tomcat-7.0.52/bin/catalina.sh start


4. 服务器A开机监测服务器B上的tomcat
将checktomcat.sh中的脚本替换成,日志在TomcatMonitor.log和TomcatMonitor.Info可以查看

#!/bin/sh

# func:自动监控tomcat脚本并且执行重启操作
# date:2018-09-07
# DEFINE

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

# tomcat启动程序(这里注意tomcat实际安装的路径)
tomcat_home=/root/tomcat/apache-tomcat-7.0.52
StartTomcat=$tomcat_home/bin/startup.sh
StopTomcat=$tomcat_home/bin/shutdown.sh
TomcatCache=$tomcat_home/work

#定义要监控的页面地址
#WebUrl=http://192.168.8.50:80
WebUrl=http://192.168.8.50.81
#日志输出
GetPageInfo=/tmp/TomcatMonitor.Info
TomcatMonitorLog=/tmp/TomcatMonitor.log

Monitor()
{
        # 检测是否启动成功(成功的话页面会返回状态"200")
        TomcatServiceCode=$(curl -s -o $GetPageInfo -m 10 --connect-timeout 10 $WebUrl -w %{http_code})
        if [ $TomcatServiceCode -eq 200 ];then
            echo "[info]页面返回码为$TomcatServiceCode,tomcat启动成功,测试页面正常"
        if [ $TomcatID ];then #这里判断Tomcat进程是否存在
            echo "主服务已启动,已关闭备用服务"
            $StopTomcat 
        fi
        else
        if [ $TomcatID ];then #这里判断Tomcat进程是否存在
             echo "备用tomcat已经启动"
        else
                 echo "[error]tomcat页面出错,请注意...状态码为$TomcatServiceCode,错误日志已输出到$GetPageInfo"
                 echo "[error]页面访问出错,开始启动备用tomcat"
                 $StartTomcat
          fi
        fi    

}
Monitor>>$TomcatMonitorLog

5. 一直启动不了tomcat,后来在/var/mail/root中发现打印出来的日志,显示权限不够。

6. 找到startup.sh中的bin目录下,输入命令行 chmod 777 ./shartup.sh即可

7.在windows系统的浏览器中输入ip,端口即可访问

8.当检查到服务器B中的网址恢复正常时,应该将服务器A中的tomcat关掉,在关掉的过程中遇到了以下问题,权限不够,步骤同上,找到bin目录下,命令输入chmod 777 ./shutdown.sh即可,再次输入浏览器的ip和端口,就访问不到了

正文到此结束
本文目录