我的互联网连接非常不稳定,有时必须下载最大200 MB的文件。
问题是速度经常下降并停滞不前,--, -K/s
并且该过程仍然有效。我以为只是向过程发送一些KILL信号,但是正如我在wget手册中阅读有关信号的信息一样,它没有帮助。
wget
在连接断开并再次恢复后,如何强制自身重新初始化并从中断的地方继续下载?
我想保持wget
运行状态,当我回来时,我希望看到它正在下载,而不是急于等待--,-K/s
。
我的互联网连接非常不稳定,有时必须下载最大200 MB的文件。
问题是速度经常下降并停滞不前,--, -K/s
并且该过程仍然有效。我以为只是向过程发送一些KILL信号,但是正如我在wget手册中阅读有关信号的信息一样,它没有帮助。
wget
在连接断开并再次恢复后,如何强制自身重新初始化并从中断的地方继续下载?
我想保持wget
运行状态,当我回来时,我希望看到它正在下载,而不是急于等待--,-K/s
。
Answers:
为了避免这种--, -K/s
情况,您可以使用--read-timeout=seconds
。这将在几秒钟后使连接超时。
如果您需要超越此限制,则可以使用此设置
wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 0
这将重试被拒绝的连接和类似的致命错误(--retry-connrefused
),它将等待1秒钟再进行下一次重试(--waitretry
),如果没有收到数据,则最多等待20秒,然后重试(--read-timeout
),最多等待15秒在初始连接超时(--timeout
)之前,最后它将重试无数次(-t 0
)。
您可能还希望将其while
循环放置,以避免本地网络故障或类似情况。在这种情况下,您还需要添加--continue
以继续从您上次中断的位置下载。以下在Bash中运行良好
while [ 1 ]; do
wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 0 --continue
if [ $? = 0 ]; then break; fi; # check return value, break if successful (0)
sleep 1s;
done;
作为一个额外的提示--no-dns-cache
,如果主机通过DNS在多个服务器之间平衡您的请求,您还可以使用。
免责声明:我不建议您使用此方法,因为如果连接不稳定,它将对主机造成垃圾邮件,并且不对其进行监视是不明智的。但是,如果您确实需要下载某些内容并且连接无法正常工作,那么这就是您想要的。
这会有所帮助吗?在askubuntu.com上,我发现了一个与您所问的问题非常相似的问题。这是它的链接:https : //askubuntu.com/questions/72663/how-to-make-wget-retry-download-if-speed-goes-below-certain-threshold
--read-timeout=900
。您只需等待15分钟,wget将重新开始下载。