使用shell脚本检测weblogic服务,服务返回非200,则自动重启

一 使用背景

  1. 针对部署在linux系统下的weblogic应用。使用shell脚本监测系统运行状态,当系统返回非200时,自动重启服务。

二 脚本实现

  1. 新建checkRunningStatus.sh,并编辑以下代码。
#!/bin/bash

TARGET_ADDR=$1
TARGET_STATE=0


while true ;do

    echo `date +"%Y-%m-%d %H:%M:%S"` start access ${TARGET_ADDR}
    if [ $TARGET_STATE -gt 3 ];then
        echo `date +"%Y-%m-%d %H:%M:%S"` can not  access ${TARGET_ADDR} ,service will reboot!
        echo "&&&&&& reboot server!"
        nohup ./startWebLogic.sh  > nohup.out 2>&1 &
        sleep 120
    fi

    HTTP_CODE=`curl -I -m 10 -o /dev/null -s -w %{http_code}"\n" ${TARGET_ADDR}`
    if [ "${HTTP_CODE}" != 200 ];then
        echo `date +"%Y-%m-%d %H:%M:%S"` The ${TARGET_STATE} time  can not access 
        echo "****** Error:  Down!"
        let TARGET_STATE=TARGET_STATE+1
    else
        echo "###### success"
    fi
    sleep 10
done
  1. 代码解释:
    • 传入变量 TARGET_ADDR,并定义变量TARGET_STATE=0;
    • 循环;
    • 打印当前时间以及变量TARGET_ADDR的值;
    • 判断变量TARGET_STATE值是否等于3;
      1) 等于3,说明连续3次没有调成功,则重启系统。重启的过程中要等待2分钟,防止没有重启完毕又重新访问系统,此时再3次失败,则会再会重启系统。
    • curl 访问所要监控的地址,判断是否返回200,如果不是,则TARGET_STATE+1,否则,打印访问成功
    • 休眠10秒钟,即每10s执行一次循环
  2. 将checkRunningStatus.sh 变成可执行文件

    chmod +x checkRunningStatus.sh

  3. 如果是windows编辑后的文件,传到linux系统,因为操作系统原因,windows下编辑的文件,会有一些看不见的字符,需要通过命令转换一下,变成unix系统的文件,

bash: ./checkRunningStatus.sh: /bin/bash^M: bad interpreter: 没有那个文件或目录
vim checkRunningStatus.sh
:set ff=unix
5. 执行此脚本

nohup ./checkRunningStatus.sh
http://127.0.0.1:8080/INTERFACE/services/listServices > running.log
2>&1 &
这里写图片描述

6.查看效果

tail -f running.log
这里写图片描述

7.部署程序时,需要停止此脚本的运行,防止重启过程中,此脚本运行造成重复重启。查看进程并杀死进程

ps -aux | grep checkRunningStatus.sh
kill ID

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值