Contents

WGET命令的超时选项

1. 概述

*wget *是一种常见的网络命令行实用程序,用于从 Web 下载资源。

在本快速教程中,我们将仔细研究其超时设置。

2. wget 超时介绍

wget有几个选项来控制不同的超时:

  • –dns-timeout=时间(秒)
  • –connect-timeout=时间(秒)
  • –read-timeout=时间(秒)
  • –timeout=时间(秒)

值得一提的是,上面的所有选项都接受十进制值和亚秒值——例如,0.8

通常,我们不应该设置亚秒级超时。但是,它们有助于检查网络延迟或服务器响应时间。

接下来,让我们通过上面的选项并了解它们可以控制的内容。

3. -–dns-timeout选项

-–dns-timeout选项指定 DNS 查找可以花费的最长时间。让我们考虑一个例子:

$ wget --dns-timeout=5 https://xxx/blob/master/README.md

此处,–dns-timeout=5表示 DNS 查找在五秒内未完成将被视为失败。

默认情况下,DNS 查找没有超时。

4. -–connect-timeout选项

–-connect-timeout选项用于 TCP 连接。如果建立 TCP 连接的时间超过给定值,它将被中止

$ wget --connect-timeout=5 https://xxx/blob/master/README.md

默认情况下,没有 TCP 连接超时。

5. –read-timeout选项

下载期间,wget会一直从服务器读取数据,直到下载完成。然而,有时,wget没有从服务器接收到数据,在这种情况下它会等待。

–read-timeout选项指的是等待时间:

$ wget --read-timeout=5 https://xxx/blob/master/README.md

在上面的示例中,如果wget等待数据的时间超过五秒,它将中止并重新开始下载。

默认读取超时为 900 秒

6. –timeout选项

-–timeout选项表示网络超时。设置-–timeout=x 相当于同时设置*-–dns-timeout=x*、-–connect-timeout=x和*-–read-timeout=x***。让我们看看它的实际效果:

$ wget --timeout=5 https://xxx/blob/master/README.md

此示例将 DNS 超时、TCP CONNECT 超时和读取超时设置为相同的值:5 秒。

如果我们想禁用所有超时,我们可以设置-–timeout=0。**

7. 超时设置和下载时长

到目前为止,我们已经了解了 wget的各种超时选项。但是,我们应该注意,这些选项不会直接影响下载的持续时间

当然,下载持续时间可以大于超时设置。

接下来,让我们看一个例子:

$ time wget --timeout=5 https://mirrors.xtom.de/archlinux/iso/2021.10.01/archlinux-2021.10.01-x86_64.iso
--2021-10-14 19:09:37--  https://mirrors.xtom.de/archlinux/iso/2021.10.01/archlinux-2021.10.01-x86_64.iso
SSL_INIT
Loaded CA certificate '/etc/ssl/certs/ca-certificates.crt'
Resolving localhost (localhost)... 127.0.0.1, 127.0.0.1, ::1
Connecting to localhost (localhost)|127.0.0.1|:8888... connected.
Proxy request sent, awaiting response... 200 OK
Length: 887435264 (846M) [application/octet-stream]
Saving to: ‘archlinux-2021.10.01-x86_64.iso’
archlinux-2021.10.01-x86_64.iso     100%[=================================>] 846.32M  2.22MB/s    in 6m 36s  
2021-10-14 19:16:13 (2.14 MB/s) - ‘archlinux-2021.10.01-x86_64.iso’ saved [887435264/887435264]
real 396.29
user 7.67
sys 15.47

如示例所示,我们使用 wget下载Arch Linux 的 ISO 安装文件。我们已将超时设置为五秒 ( –timeout=5 ) 并使用time 命令来测量下载持续时间。

由于超时设置较小(5 秒),下载并未中断,尽管完整下载已花费了大约 400 秒。