You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现curl请求3次重试后重启服务并添加1秒间隔

解决方案

要实现3次独立检测、每次间隔1秒,且仅当三次检测均未返回200状态码时重启服务的逻辑,可以通过循环结构修改脚本,具体代码如下:

#!/usr/bin/env bash

# 配置参数,方便后续调整
API_ENDPOINT="https://myapi.com/endpoint"
CHECK_TIMES=3
INTERVAL=1

# 标记是否有检测成功的情况
check_passed=false

# 执行三次检测循环
for (( i=1; i<=CHECK_TIMES; i++ )); do
    # 发送HEAD请求并获取状态码
    status_code=$(curl -X HEAD --write-out %{http_code} --silent --output /dev/null "$API_ENDPOINT")
    
    # 若本次检测返回200,标记为成功并终止循环
    if [[ "$status_code" -eq 200 ]]; then
        check_passed=true
        break
    fi
    
    # 非最后一次检测时,等待指定间隔
    if [[ $i -lt $CHECK_TIMES ]]; then
        sleep $INTERVAL
    fi
done

# 三次检测均未通过时,重启服务
if [[ $check_passed == false ]]; then
    systemctl restart myService
else
    exit 0
fi

核心改动说明:

  • 新增循环逻辑:使用for循环控制检测次数,避免重复编写三次检测代码
  • 状态标记机制:通过check_passed变量记录是否有检测成功的情况,只要一次成功就不再继续检测
  • 间隔控制:在相邻两次检测之间加入sleep实现1秒延迟,最后一次检测后无需等待
  • 参数化配置:将API地址、检测次数、间隔时间提取为变量,便于后续修改维护

内容的提问来源于stack exchange,提问作者Sixthpoint

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 05:07:24