Skip to content

通用健康检查脚本

参数

  1. 探活地址/健康检查地址
  2. 检查次数(代码中固定每次检测间隔为 2s)

调用

其它文件引用,以文件名为 health_check.sh 为例:

bash
# 引入
source ./health_check.sh

# 调用
health_check "http://$IP:8000/v1" 30

代码

bash
#!/bin/bash

health_check() {
    health_check_url=$1
    check_times=$2

    exptime=0
    echo -e "\n健康检查地址:${health_check_url}"

    while true
    do
        status_code=`/usr/bin/curl -L -o /dev/null --connect-timeout 5 -s -w %{http_code} ${health_check_url}`
        if [[ $? -ne 0 ]]; then
            echo -n -e "\r健康检查执行失败"
        else
            echo "code is $status_code"
            if [[ "$status_code" == "200" ]]; then
                echo '健康检查成功'
                break
            fi
        fi
        sleep 2
        ((exptime++))

        echo -e "\r第 $exptime 次执行健康检查"

        if [[ $exptime -gt ${check_times} ]]; then
            echo '健康检查失败,超过最大检测次数'
            exit 1
        fi
    done
}