自动判断某应用服务是否启动成功,结果可供其它程序调用

需求:应用自动部署后,需要加一个判断,确认应用是否启动成功,并返回成功或失败结果;成功则将对应结果传给其它程序调用,进行下一步的自动化动作(比如:执行接口自动化测试)。

思路:匹配日志文件中应用服务启动成功后的某个字段,匹配到则返回成功的结果,规定时间内匹配不到,则判断启动失败(服务进程判断方式不可取,服务刚启动时会存在进程;如果启动失败,进程会死掉)。将成功或失败结果赋值给一个变量,可供其它程序调用。


 实现如下:

#启动CWY服务
cd /opt/cwy8.31/product/module/A/CWY
sh startup.sh

#CWY服务启动判断
Logfile="/opt/cwy8.31/product/module/A/CWY/nohup.out"
Starttag="maTaskScheduler"

fun(){
i=0
while [ -f ${Logfile} ]
do
    echo "正在通过日志确认是否启动"
    echo "检查CWY服务启动日志输出的成功标识:【$Starttag】"
    set +e
    result=`grep $Starttag ${Logfile}`
    started='started'
    failed='failed'
    set -e
    if [ "$result" != "" ]
    then
        echo "启动成功 ........."
        res=$started
        break
    else
        if [ "$i" -gt 600 ]
        then            
            echo "超时,判定启动失败 ........."
            res=$failed
            break
        else
            echo "启动中 ......."
            sleep 1s
            i=$[$i+1]
        fi
    fi
done
}

fun
echo $res

脚本调试问题记录:

1. 在while循环中使用return报错:hh.sh: line 18: return: can only `return' from a function or sourced script

  问题原因:shell脚本中的return常放在函数中执行(也可用在shell脚本函数体外,执行方式为: source xx.sh)

  解决办法:将while循环封装到函数中,调用函数可解决此报错问题

2. return字串报错:hh.sh: line 18: return: failed: numeric argument required

  问题原因:shell的function只能返回整数值

  解决办法:该处可以将返回值赋值给一个变量,调用该function后,可以通过该变量获取到返回值

3. 判断启动成功后,返回成功结果;判断启动失败后,不返回失败结果

  问题原因:判断成功后,使用break(跳出循环);判断失败后,大意使用了exit(结束脚本执行)

  解决办法:将失败判断条件中的exit改为break

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值