让 curl 自动重试并遵守超时限制

大多数人忘记的容错参数:--retry、--retry-all-errors、--connect-timeout 和 --max-time,让不稳定的下载变得可靠。

Linuxcurl 请求超时重试低风险
执行 `curl --retry 3 --retry-all-errors --connect-timeout 5 --max-time 60 -fLO <url>`,最多重试 3 次,连接超时 5 秒,整体限时 60 秒。

01命令

命令
$ curl --retry 3 --retry-all-errors --connect-timeout 5 --max-time 60 -fLO https://example.com/file.tar.gz

02作用说明

默认情况下 curl 遇到第一次网络错误就放弃,而且服务器卡住时会无限等待,这正是定时下载悄悄失败的原因。`--retry 3` 能处理暂时性错误并遵守服务器返回的 Retry-After 头,但只覆盖少量错误码,除非加上 `--retry-all-errors`(curl 7.71+)。`--connect-timeout` 只限制 TCP 握手,`--max-time` 限制整个传输过程,这样下载 10 KB 的文件绝不可能挂一小时。

03风险

风险低风险
使用条件curl 7.71+ for --retry-all-errors
!注意: --retry-all-errors 会重发 POST 等非幂等请求——对支付、下单类接口不要使用。

04撤销

✓无需撤销——该命令不会改变持久状态。

05来源

最后验证: 2026-09-17 · 分类: 网络