我正在尝试使用下载一些文件wget
,但一小时后我的下载速度下降。如果我取消下载并重新启动,下载速度将提高一个小时。
是否可以在 中设置下载速度的下限wget
,以便当速度低于该阈值时,wget
重新启动或重新启动?
答案1
相反,你应该解决根本问题。因此,请分析您的连接速度下降的原因并排除原因。
如果它是一些省电功能,您几乎肯定可以将其关闭或以不影响网络的方式配置它。
答案2
一段时间后,您下载的网站或您的 ISP 可能会限制您的带宽。它可能有助于限制传输速率--limit-rate
。
有几个选项可以告诉 wget 退出。通过--tries
( -t
)来控制重试次数。如果您稍微调整一下重试的速度,也许会得到更好的--wait
结果--wait-random
。如果服务器支持,Wget 将自动从停止处恢复。如果传输速率被限制到一个非常低的数字,然后--read-timeout
使用一个非常小的参数,例如0.1
十分之一秒,如果速率降至每 0.1 秒一个数据包以下,将重新启动连接。请注意,如果由于网络故障而在这段时间内没有收到数据包,连接也将重新启动。
如果您事先知道在受到限制之前大约还有多少时间,请编写一个 shell 片段来终止 wget 进程并再次启动它,并提供-c
恢复下载的选项。警告,未经测试;在 shell 中使用后台子进程有点奇怪,所以我建议使用 Perl 或 Python 来完成严肃的工作。
while wget -q -c http://example.com/wibble & wget_pid=$!
{ sleep 300; kill $wget_pid; } & kill_pid=$!
wait $wget_pid
kill $kill_pid
wait
do sleep 10; done
答案3
我的 wget 版本支持在无下载超时后重试,read-timeout
如下所示...
$ wget -c --read-timeout=5 http://thefile.com/getme.txt
36% [+++++++++++++++++++++++++++++++++++++++++++======> ] 280,061,984 --.-K/s in 6m 16s
2012-05-09 16:04:23 (105 KB/s) - Read error at byte 280061984/761323675 (Operation timed out). Retrying.
似乎没有办法设置下限,但它对我的持续下载有很大帮助 - 希望其他人搜索这个问题。