首页 > 系统相关 >shell编写循环检查脚本

shell编写循环检查脚本

时间:2022-12-03 23:12:10浏览次数:38  
标签:脚本 shell service echo 重试 flag 编写 bk config

背景:如下脚本实现当微服务重启后,检查微服务的启动端口正常,可通过轮询的方式来实现
所需要用到配置文件config.properties信息如下:

onlineService:8001
algorthService:8002
recallService:8003
sortService:8004

 实现方案:定义一个flag标记与重试的次数,使用do-while循环,当检查命令执行成功、或者达到重试最大次数时终止,

代码如下:

if [ "X${whoami}" != "Xbk" ];then
{
    echo "current user i not bk"
    exit 1
}
fi

#修改配置
for service in `cat config.properties|awk -F ':' '{print $1}'`;
    do
        sed -i "s#^  name:{{getv.*#name:test#g" /opt/easyconf/etc/bk/$service/config.yaml
        sed -i "s#^  regoin:{{getv.*#regoin:delivery#g" /opt/easyconf/etc/bk/$service/config.yaml
        sed -i "s#^  availableZone:{{getv.*#availableZone:online#g" /opt/easyconf/etc/bk/$service/config.yaml
        echo "$service的easyconf下microservice文件修改成功"
    done
    echo "等待60s,easyconf同步时间"
    
#重启
for service in in `cat config.properties|awk -F ':' '{print $1}'`;
    do
        #echo /opt/bk/$service/browser-$service/bin
        sh /opt/bk/$service/$service/bin/start.sh > /dev/null 2>&1
        echo "${service}服务开始重启"
    done
    
    #循环检查5次
    #循环检查5次 
    echo "等待60s,验证服务状态,最多重试间隔10s*5次"
    sleep 60
    count = 0 #记录重试次数
    flag = 0 #重试标识,flag=0表示任务正常,flag=1表示需要进行重试
    for i in `cat config.properties|awf -F ':' '{print $1}'`;done
        i1 = `echo "$i"|awk -F ':' '{print $1}'`
        i2 = `echo "$i"|awk -F ':' '{print $2}'`
        while [ 0 -eq 0]
        do
            echo "....................job begin check-${i1}服务....................."
            #.....添加要执行的内容,flag的值在这个逻辑中更改为1,或者不变..........
            netstat -ntpl |grep ${i2} > /dev/null 2>&1
            flag = $?
            #检查和重试过程
            if [ $flag -eq 0 ];then#执行成功,不重试
                echo "....................job complete(${i1}服务重启成功................."
                break;
            else #执行失败,重试
                count = $[${count}+1]
                if [ ${count} -eq 5];then #执行重试次数,重试超过5次即失败
                    echo 'timeout,exit.'
                    break
                fi
                echo "....................retry ${count} in 10 seconds................."
                sleep 10
            fi
        done
    done
    echo "执行成功,微服务均配置与重启成功"

 

标签:脚本,shell,service,echo,重试,flag,编写,bk,config
From: https://www.cnblogs.com/mrwhite2020/p/16793524.html

相关文章

  • shell读取配置文件中的参数
    shell读取配置文件中的参数配置文件配置文件config.properties如下:user=bkage=25ip=192.168.37.1 一、使用cat+awk语句过滤并赋值变量user=`catconfig.proper......
  • Shell脚本(一)
    Shell:命令行解释器,接收应用程序/用户命令,然后调用操作系统内核。1.入门脚本以#!/bin/bash开头1xqchang@sam-System-Product-Name:~/linux/datas$touchhelloworld.s......
  • 代编写选股公式 交易模型 指标公式 主图指标 副图指标 定制
    通达信超牛主图指标公式、通达信ene主图指标公式、通达信主图指标公式大全、通达信最牛最全主图指标公式、通达信趋势线主图指标公式、通达信精美主图指标公式......
  • 代编写金字塔交易策略,金字塔波浪策略交易源码 定制
    一、策略思想:   趋势交易是投资中非常常见的交易手法,其高收益吸引了众多的投资者通过观察,在一轮完整的趋势行情中,价格并不会一路上涨或下跌,正如波浪理论所解释的......
  • 代编程序化交易模型,代编写公式指标,定制交易策略
    有思路,想编写各种指标公式,交易模型,选股公式,还原公式的朋友可联系技术人员QQ:262069696或微信:cxh99cxh99进行有偿收费编写!(注:由于人数限制,QQ或微信请选择方便的一个......
  • jenkins集成shell与gitlab
    jenkins集成shell    故障:                     故障:  开发提交了代码,然后自动发布测试环境持续集成持续交......
  • 编写云计算计费系统
    上一篇介绍了自建一个Laxcus云计算计费系统需要了解的基础知识,这一篇咱们从编程角度,来说说如何编写一个简单的云服务计费系统,如果你有更复杂的需求,可以在这个上面扩展。更进......
  • 运行python报错 此系统上禁止运行脚本
    无法加载文件D:\PycharmProjects\jingdong_app\venv\Scripts\activate.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅https:/go.microsoft.com/fwlink/?LinkID=135......
  • python | 一个简单的icmp shell实现(不完善)
    python|一个简单的icmpshell实现(不完善)一个是server端,一个是cilent端,其实问题还是很多的,尤其是在真实网络中的时候,这个shell只适用于直连的情况,并且data不能太大(因为ic......
  • uni 结合vuex 编写动态全局配置变量 this.baseurl
    在日常开发过程,相信大家有遇到过各种需求,而我,在这段事件便遇到了一个,需要通过用户界面配置动态接口,同时,因为是app小程序开发,所以接口中涉及到了http以及websocket两个类型......