如何在Bash中实现yarn脚本自动重试,支持间隔限流与30秒超时限制
Bash 重试脚本实现方案
你可以直接使用以下满足「1秒重试间隔、最多累计重试30秒」要求的脚本:
#!/bin/bash # 配置参数:最大重试30次,对应总时长30秒(间隔1秒) max_retry=30 retry_interval=1 retry_count=0 while : do # 执行目标命令 yarn graphql # 命令执行成功直接退出循环 if [ $? -eq 0 ] then echo "SUCCESS" exit 0 fi retry_count=$((retry_count + 1)) # 达到最大重试次数后报错退出 if [ $retry_count -ge $max_retry ] then echo "FAIL: 累计重试${max_retry}次仍未成功" exit 1 fi # 等待指定间隔后重试 sleep $retry_interval done
自定义调整说明
- 你可以修改
max_retry参数的值调整最大重试次数 - 你可以修改
retry_interval参数的值调整重试间隔(单位为秒,支持0.5这类小数配置)
通用复用方案
如果你需要把重试逻辑复用给其他命令,可以封装为通用函数:
#!/bin/bash # 通用重试函数:参数1=最大重试次数 参数2=重试间隔 后续参数为要执行的命令 retry() { local max_retry=$1 local retry_interval=$2 shift 2 local target_cmd="$@" local retry_count=0 while : do $target_cmd if [ $? -eq 0 ] then echo "SUCCESS" return 0 fi retry_count=$((retry_count + 1)) if [ $retry_count -ge $max_retry ] then echo "FAIL: 累计重试${max_retry}次仍未成功" return 1 fi sleep $retry_interval done } # 调用示例:重试30次、间隔1秒执行yarn graphql retry 30 1 yarn graphql
内容的提问来源于stack exchange,提问作者Charklewis
相关产品推荐
相关产品推荐

