我的网络连接非常不稳定,有时必须下载 200 MB 大的文件。
问题是速度经常下降并停滞不前,--, -K/s
而进程仍然处于活动状态。我以为只需向该进程发送一些 KILL 信号,但当我读到在 wget 手册中有关信号这没有帮助。
当连接断开并再次建立后,如何强制wget
重新初始化并从中断的地方继续下载?
我希望它保持wget
运行状态,当我回来时,我希望看到它正在下载,而不是等待速度--,-K/s
。
答案1
为了避免这种--, -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 在多个服务器之间平衡您的请求。
免责声明:我不建议使用此功能,因为如果连接不稳定,它会向主机发送垃圾邮件,并且不监控它有点不明智。但是,如果您确实需要下载某些内容并且您的连接无法正常工作,这就是您想要的。
答案2
--tries=number
此选项将重试次数设置为 number。指定 0 或“inf”表示无限次重试。
wget --tries=0 http://example.com/myfile.zip
应该这么做。
默认重试 20 次,例外诸如“连接被拒绝”或“未找到”(404)等致命错误,不会重试。
答案3
这有帮助吗?在 askubuntu.com 上,我发现了一个与你问的问题非常相似的问题。以下是链接:https://askubuntu.com/questions/72663/how-to-make-wget-retry-download-if-speed-goes-below-certain-threshold