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

    xiaoxiao2021-03-25  98

    一 使用背景

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

    二 脚本实现

    新建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 代码解释: 传入变量 TARGET_ADDR,并定义变量TARGET_STATE=0;循环;打印当前时间以及变量TARGET_ADDR的值;判断变量TARGET_STATE值是否等于3; 1) 等于3,说明连续3次没有调成功,则重启系统。重启的过程中要等待2分钟,防止没有重启完毕又重新访问系统,此时再3次失败,则会再会重启系统。curl 访问所要监控的地址,判断是否返回200,如果不是,则TARGET_STATE+1,否则,打印访问成功休眠10秒钟,即每10s执行一次循环

    将checkRunningStatus.sh 变成可执行文件

    chmod +x checkRunningStatus.sh

    如果是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

    转载请注明原文地址: https://ju.6miu.com/read-24379.html

    最新回复(0)