如何通过终端检查互联网速度?

ker*_*nic 611 command-line internet download-speed

我不想去像speedtest.net这样的网站,而是想从 Ubuntu 上的终端检查我当前的互联网速度。我该怎么做?

小智 985

我为此推荐speedtest-cli工具。我创建了一篇博客文章(从 Linux 命令行测量 Internet 连接速度),详细介绍了它的下载、安装和使用。

简短版本是这样的:(不需要root)

curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py | python -
Run Code Online (Sandbox Code Playgroud)

输出:

Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from Comcast Cable (x.x.x.x)...
Selecting best server based on ping...
Hosted by FiberCloud, Inc (Seattle, WA) [12.03 km]: 44.028 ms
Testing download speed........................................
Download: 32.29 Mbit/s
Testing upload speed..................................................
Upload: 5.18 Mbit/s
Run Code Online (Sandbox Code Playgroud)

2018 年更新:

使用pip install --user speedtest-cli会为您提供一个版本,该版本可能比您的发行版存储库中可用的版本更新。

2016 年更新:

speedtest-cli现在在 Ubuntu 存储库中。对于 Ubuntu 16.04 (Xenial) 及更高版本,请使用:

sudo apt install speedtest-cli
speedtest-cli
Run Code Online (Sandbox Code Playgroud)

  • 正如 [此处](http://askubuntu.com/a/385015/112263) 所述:由于 speedtest-cli 是一个 Python 应用程序,因此通过执行以下操作更容易安装:`pip install speedtest-cli`或: `easy_install speedtest-cli` 根据 Python 在您系统上的安装方式,您可能需要以 root 身份执行上述操作。 (37认同)
  • 这应该是公认的答案……speedtest-cli 对我来说工作正常;认为@int_ua 要么存在兼容性问题,要么存在互联网问题。 (6认同)
  • 这似乎不能正常工作。我有 BT infinity 50bBit 下降和 20Mbit 上升。但结果显示为 0.53Mbit 下降和 0.2Mbit 上升。嗯?小数点位置不正确?使用 wget 我得到 4.27M/s(34Mbit)(虽然是其他一些服务器)? (2认同)
  • 确认 **speedtest-cli 已损坏**。不显示超过 1Mbps 的速度。声称这样做时不传输任何信息。 (2认同)
  • 这应该是正确的答案。速度测试意味着下载和上传。第一个答案仅衡量下载速度,这不是您的互联网连接速度的全貌。特别是如果您在该机器上托管某些东西! (2认同)

Tac*_*ons 121

在命令行上试试这个

wget --output-document=/dev/null http://speedtest.wdc01.softlayer.com/downloads/test500.zip
Run Code Online (Sandbox Code Playgroud)

也试试这个

sourceforge.net/projects/tespeed/
Run Code Online (Sandbox Code Playgroud)

从上面的链接得到它

  • 它是一种特殊的文件,它只是将删除数据写入其中, (15认同)
  • 你能解释一下`/dev/null`代表什么吗? (2认同)
  • 对我来说,在 Ubuntu 14.10 和 python 2.7.8 上,命令 `wget --output-document=/dev/null http://speedtest.wdc01.softlayer.com/downloads/test500.zip` 比使用 `speedtset- 要好得多cli` 后者似乎冻结并且 ^C 无法中断命令。使用 wget 我可以用 ^C 剪切下载文件没有问题 (2认同)
  • 请注意,speedtest.wdc01.softlayer.com 只是一个特定的 Speedtest 服务器。世界各地有成千上万个,根据您所在的位置,使用这个进行测试可能会也可能不会为您提供正确的结果。Speedtest.net 会自动选择离您最近的服务器,这应该更相关。理想情况下,您应该使用浏览器的开发工具找出 speedtest.net 在您的情况下选择的主机名/URL,并在上面的 wget 行中使用它,而不是 speedtest.wdc01.softlayer.com。 (2认同)

One*_*ero 67

如果您懒得安装 iperf ,您可以在任何使用该time命令移动已知数据量的命令之前进行求和。

iperf 简单易用。

它需要客户端和服务器。

(在服务器上)

 user@server$ iperf -s
Run Code Online (Sandbox Code Playgroud)

(在客户端)

 user@client$ iperf -c server.domain
 ------------------------------------------------------------
 Client connecting to 192.168.1.1, TCP port 5001
 TCP window size: 16.0 KByte (default)
 ------------------------------------------------------------
 [  3] local 192.168.1.3 port 52143 connected with 192.168.1.1 port 5001
 [ ID] Interval       Transfer     Bandwidth
 [  3]  0.0-10.0 sec    113 MBytes  94.7 Mbits/sec
Run Code Online (Sandbox Code Playgroud)

更多细节

  • +1 iperf 非常适合验证以太网和 WIFI 速度 (7认同)
  • 那些没有可以连接的远程服务器的人,有公开可用的 iperf 服务器:https://iperf.cc/ (3认同)
  • @dargaud 确保不要将 TCP 速度与 UDP 速度混合。大多数速度测试工具测量 UDP 速度,但 iperf 默认测量 TCP 速度。使用“iperf -u -c servername”来测量 UDP 速度。结果可能非常接近速度测试给您的结果。 (3认同)
  • `iperf` 非常适合 LAN,但用户正在询问 WAN。 (2认同)
  • speedtest 没有用,因为大多数互联网提供商都知道他们的服务器地址并确定它们的优先级。我用 iperf 得到的结果是 speedtest 给我的结果的十分之一。这些是我达到的有效速度。 (2认同)

Lui*_*ado 36

好吧,我用wget它。那个小工具很好地告诉我我的速度。

使用它只需指向互联网上相对较大的文件,以便您可以更好地估计它。

例如

键入:wget http://hostve.com/neobuntu/pics/Ubu1.avi将开始下载 Ubu1.avi 文件并显示下载速度。

在此处输入图片说明

当然有几个建议:

  1. 使用良好的服务器测试自己的速度。在我的链接的情况下,速度小于 200KB,所以如果你有更高的速度,服务器将成为你的瓶颈,而不是你的实际速度。

  2. 您将看到的最高速度是您的连接和服务器的连接可以提供的最大速度。如果您的连接是 512KB,而您下载的地方是 400KB,那么您的最大连接将是 400KB,因为这是您正在下载的服务器的最大连接。

  3. 您需要至少进行 5 次测试才能进行可靠的速度检查,或者至少要进行一两分钟。这将帮助您进行更准确的检查。

  4. 您需要至少有 4 或 5 个不同的测试源才能获得更准确的速度。切勿仅从同一站点进行测试,因为这可能会受到您与该站点的距离、服务器中的任何问题以及与该站点的连接等的影响。始终从不同的服务器进行测试。

咏叹调2

这是wget. 缺点wget是缺乏并行连接。要使用 aria2,我们首先需要下载它:

   sudo apt-get install aria2
Run Code Online (Sandbox Code Playgroud)

使用它很简单:

在此处输入图片说明

在图像中,-x 4是我们希望使用的并行连接数。下一行中的 CN 参数显示允许从该站点下载的活动并行连接数。在这种情况下,CN 是 4。但是如果我们尝试有更多的连接,我们会得到这样的结果:

在此处输入图片说明

我们设置了 8 个并行连接,但站点只允许最多 5 个,如 CN:5 所示。这可以通过-j选项来解决,该选项告诉 aria2c 我们想要的最大并发连接数(默认为 5),但如果服务器对此进行了限制,则 -j 将不起作用。

  • 这不是速度测试,这只是下载速度测试!网速测试意味着下载和上传!第二个答案,所有其他提到 speedtest-cli 的人都有正确的方法。 (3认同)
  • @EmilBorconi你是对的,但在现实生活中,我们没有在这里对互联网速度进行基准测试,这只是您对任何家庭用户的平均当前速度测试,不需要像speedtest这样的网站。下载速度(对于任何试图查看他们是否遇到瓶颈的人来说已经足够了)是一个足够好的测试。完整的向下/向上速度测试将检查您的速度的全部范围是基于您的 ISP。所以是的,这将是最好的解决方案,但对于任何快速测试场景,即使是一个简单的 wget 也能解决问题,因为通常人们更担心下载速度而不是上传速度。 (2认同)

小智 19

由于 speedtest-cli 是一个 python 应用程序,通过执行以下操作更容易安装:

pip install speedtest-cli
Run Code Online (Sandbox Code Playgroud)

或者:

easy_install speedtest-cli
Run Code Online (Sandbox Code Playgroud)

根据 Python 在您系统上的安装方式,您可能需要以 root 身份执行上述操作。


6ft*_*Dan 10

我碰巧喜欢speedometerUbuntu cli。

speedometer -r eth0
Run Code Online (Sandbox Code Playgroud)

观看传入数据速度的实时图表。


小智 8

我经常使用这样的东西:

% wget -O /dev/null --progress=dot:mega http://cachefly.cachefly.net/10mb.test ; date
--2020-01-06 03:31:05--  http://cachefly.cachefly.net/10mb.test
Resolving cachefly.cachefly.net (cachefly.cachefly.net)... 2607:7700::18:0:1:cdea:afaf, 205.234.175.175
Connecting to cachefly.cachefly.net (cachefly.cachefly.net)|2607:7700::18:0:1:cdea:afaf|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 10485760 (10M) [application/octet-stream]
Saving to: <</dev/null>>

     0K ........ ........ ........ ........ ........ ........ 30% 3.02M 2s
  3072K ........ ........ ........ ........ ........ ........ 60% 3.97M 1s
  6144K ........ ........ ........ ........ ........ ........ 90% 3.94M 0s
  9216K ........ ........                                    100% 3.99M=2.8s

2020-01-06 03:31:08 (3.62 MB/s) - <</dev/null>> saved [10485760/10485760]

Mon Jan  6 03:31:08 CST 2020
%
Run Code Online (Sandbox Code Playgroud)

您可以将10mb部分更改/10mb.test1mb4mb5mb10mb50mb100mb200mb400mb2000mb4000mb、 以及可能的其他一些值。

您还可以更改--progress=dot:mega部分--progress=dot:default--progress=dot:binary--progress=dot:mega--progress=dot:giga; 此设置可帮助您查看下载速度,并在整个下载过程中保留多个读数,这在您需要与某人共享结果或将其保存为您自己的记录时很有帮助一种图表。


rub*_*o77 5

一个简单的单行测试下载 100MB 需要多长时间(/bin/sh也适用):

t=$(date +"%s"); wget http://speedtest.tele2.net/100MB.zip -O ->/dev/null ; echo -n "MBit/s: "; expr 8 \* 100 / $(($(date +"%s")-$t))

解释:

  1. 将时间戳存储在 $t 中
  2. 下载 100mb 但不要存储任何东西
  3. 计算 8 * 100mb / $t