如何配置 wget 重试超过 20 次?

问题描述 投票:0回答:2

我使用 d4x 继续下载,但它在 ubuntu 中已经过时了。于是我用flashgot配合wget继续下载。但是 wget 在尝试 20 次后停止,我必须手动重新启动。有没有我可以修改重试次数超过 20 次的 conf 文件?

wget CLI 是由 wget 自动创建的,所以请不要告诉我我可以使用 wget CLI 进行选择。

linux command-line-interface wget
2个回答
68
投票

使用

--tries
选项

wget --tries=42 http://example.org/

指定

--tries=0
--tries=inf
无限重试(默认为 20 次重试)。

默认值也可以通过配置文件更改,如果那是你的事;打开

/etc/wgetrc
并在那里寻找:

# You can lower (or raise) the default number of retries when
# downloading a file (default is 20).
#tries = 20

取消注释

tries=20
并将其更改为您想要的。

默认重试20次,致命错误除外 像“拒绝连接”或“未找到”(404),不会重试


6
投票

如果默认的重试值不能满足您的需要,则可能是您从不稳定的源下载。

以下选项也可能有很大帮助。

--retry-connrefused  --read-timeout=20 --timeout=15 --tries=0 --continue

--retry-connrefused
即使服务器拒绝请求也强制 wget 重试,否则 wget 将停止重试。

--waitretry=1
如果您决定重试多次,最好在每次重试之间添加一些短时间。

--timeout=15
不稳定的链接总是导致数据流停止,默认的 900s 超时太长了。有
--dns-timeout
--connect-timeout
--read-timeout
。通过指定
--timeout
,您可以同时更新它们。

--tries=0
使 wget 重试无穷大,除了 404 等致命情况。

--continue
恢复下载

2023-02-28T17:59:32 添加

最近,我发现 wget 会在 severl 尝试非常不稳定的链接后自动存在,并配置了上述所有选项。

所以,我想出了一个 autohotkey 脚本,它将检查 wget 是否仍在运行。如果没有,它会再次提出来。

; AutoHotkey Version: 1.x
; Language:       English
; Platform:       WinXP/7
; Author:         studotwho
; Url:        https://www.autohotkey.com/board/topic/66615-continuously-check-if-a-program-is-running-and-start-it/
;
; Script Function:
;   Restarts the iTeleportConnect service if it hasn't started - this usually happens if your
;   wireless network interface hasn't started when iTC tries to connect.
;
;   This script loops every (45) seconds to determine if iTC is running or not, and restarts it if it's not.
;

#SingleInstance, force
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

iTC_EXE     = C:\usrprogs\wget-1.19.4-win32\lowspeeddown.bat
iTC_Path    = C:\usrprogs\wget-1.19.4-win32
iTC_imgName = wget.exe

loop {
    sleep 3000
    Process, Exist, %iTC_imgName% ; check to see if iTeleportConnect is running
    If (ErrorLevel = 0) ; If it is not running
       {
       Run, %iTC_EXE%, %iTC_Path%
       }
    Else ; If it is running, ErrorLevel equals the process id for the target program (Printkey). Then do nothing.
       {
        sleep 5
       }
}
© www.soinside.com 2019 - 2024. All rights reserved.