让 curl 自动重试并遵守超时限制
大多数人忘记的容错参数:--retry、--retry-all-errors、--connect-timeout 和 --max-time,让不稳定的下载变得可靠。
执行 `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.gz02作用说明
默认情况下 curl 遇到第一次网络错误就放弃,而且服务器卡住时会无限等待,这正是定时下载悄悄失败的原因。`--retry 3` 能处理暂时性错误并遵守服务器返回的 Retry-After 头,但只覆盖少量错误码,除非加上 `--retry-all-errors`(curl 7.71+)。`--connect-timeout` 只限制 TCP 握手,`--max-time` 限制整个传输过程,这样下载 10 KB 的文件绝不可能挂一小时。
03风险
!注意: --retry-all-errors 会重发 POST 等非幂等请求——对支付、下单类接口不要使用。
04撤销
✓无需撤销——该命令不会改变持久状态。
05来源
- curl(1) man page — --retry, --retry-all-errors, --connect-timeout, --max-time依据: Documents retry semantics (transient errors, Retry-After handling), --retry-all-errors, and the two timeout flags.
最后验证: 2026-09-17 · 分类: 网络