一 使用背景
针对部署在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