命令行curl超时参数

19

我正在使用命令行curl程序,但有趣的是我没有找到一个命令行curl的超时参数。我阅读了curl的手册并进行了谷歌搜索,但仍然没有找到一个。libcurl有超时参数(CURLOPT_TIMEOUT),但这不是我要找的命令行curl超时参数。

有一个--max-time参数用于保持连接打开的最长时间和一个--connect-timeout参数用于curl的连接阶段,但没有普通的超时时间参数。

有人知道这个参数吗?


“Normal timeout” 是什么意思? - msw
假设我正在使用curl下载一个大文件,并且需要花费一小时才能完成下载。因此,我应该将超时时间设置为大于1小时。这就是我所说的超时时间。 - user1519575
2个回答

34

选项 --max-time 正好符合您的需求: "允许整个操作花费的最长时间(以秒为单位)"。你只是对它的理解有误。

# 10 seconds for the full operation to complete
curl --max-time 10 https://example.com

4

在Unix操作系统中,你可以使用timeout命令。尝试以下命令:

timeout -s SIGTERM 3600 curl --your arguments here

如果可以的话,在3600秒后发送SIGTERM以结束程序,如果它遵守这个信号。这总比默认的暴力SIGKILL好,后者可能会在文件下载到99%时损坏文件。


1
这有两个问题。(1) 这个超时时间将应用于整个curl操作,包括DNS解析、连接和等待回复。使用--connect-timeout--max-time参数提供更细粒度的控制,并保持curl本身的控制流; (2) 在我检查的每个*nix上,正确的语法是-s SIGTERM--signal=SIGTERM,而不是-SIGTERM - Chris Johnson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接