Wget等待功能无法按预期工作


3

背景:
我在RedHat Linux(版本7.3(Maipo))上使用wget(版本1.14-15.el7),在Bash(版本4.2.46(1))终端中。

不幸的是,我仅限于这个特定的RHEL映像,所以我无法升级到更新版本的wget。

目标:
我正在尝试配置wget,以便在下载尝试失败时执行以下操作:
1)重试下载4次(共5次尝试)
2)在下载尝试之间等待一段固定的时间(30秒)('重试')

对于上下文,这是wget手册的相关片段:

   -w seconds
   --wait=seconds
       Wait the specified number of seconds between the retrievals.  Use of this option is
       recommended, as it lightens the server load by making the requests less frequent.
       Instead of in seconds, the time can be specified in minutes using the "m" suffix, in
       hours using "h" suffix, or in days using "d" suffix.

       Specifying a large value for this option is useful if the network or the destination
       host is down, so that Wget can wait long enough to reasonably expect the network error
       to be fixed before the retry.  The waiting interval specified by this function is
       influenced by "--random-wait", which see.

   --waitretry=seconds
       If you don't want Wget to wait between every retrieval, but only between retries of
       failed downloads, you can use this option.  Wget will use linear backoff, waiting 1
       second after the first failure on a given file, then waiting 2 seconds after the second
       failure on that file, up to the maximum number of seconds you specify.

       By default, Wget will assume a value of 10 seconds.

要清楚,我正在使用 --wait 国旗,而不是 --waitretry 旗。

处理:

首先,我导出/设置了错误的http_proxy和https_proxy,以确保任何下载尝试都会超时。

我运行以下命令: wget --tries=5 --wait=30 <url> -O <output_filename>

此时, --wait 功能无法按预期工作。具体来说,它不会在每次下载尝试后等待30秒。

代替:
1)第一次尝试后,等待1秒。
2)第二次尝试后,等待2秒。
3)第3次尝试后,等待3秒。
等等 ...

换句话说,尽管使用了 --wait 标志(这应该导致下载尝试之间的固定等待时间),wget似乎正在执行“线性退避”,如 --waitretry 旗帜部分。

问题:
我想要的功能 --wait 国旗,而不是 --waitretry 旗。

不幸的是, --wait 国旗似乎表现得像 --waitretry flag - 有没有办法在wget中修复这个明显的bug,以便使用 --wait flag导致下载尝试之间的预期固定等待时间?


1
你尝试过尝试等待吗?
Anaksunaman

谢谢,但改变标志的顺序没有区别。
Seth

1
--wait 仅用于下载之间的等待 不同 文件,它与重试失败的下载完全无关。
Barmar

1
@Barmar我不确定。片段:“如果网络或目标主机关闭,此选项很有用,这样Wget可以等待足够长时间”与重试失败的下载有关,不是吗?
Kamil Maciorowski

1
你可以使用带有wait命令的shell循环并设置wget只尝试下载一次吗?你在递归下载多个文件吗?你为什么需要这个固定的时间?只是要求阻止一个 XY-问题 ...
mpy

Answers:


1

每当我发现linux实用程序没有按手册页中所描述的那样运行时,我会查看BSD手册页。他们往往充满了额外的宝贵信息。

我在--waitretry部分的末尾发现了这个: 请注意,默认情况下,此选项在全局wgetrc中处于启用状态        文件。

您可能有一个全局或用户wgetrc值定义waitretry。

我不是100%确定RHEL版本上文件的位置。 可能的选项:〜/ .wgetrc / etc / wgetrc / usr / local / etc / wgetrc https://www.gnu.org/software/wget/manual/wget.html#Startup-File

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.