背景
我在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
标志一样 - 是否有办法解决wget中这个明显的错误,以便使用--wait
标志结果在下载尝试之间的预期固定等待时间?
答案 0 :(得分:0)
从您提供的--help
对话框中可以看出,我相信您应该能够在命令中使用--waitretry
,get --tries=5 --waitretry=30 <url> -O <output_filename>
之类的内容应该有效!