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


466

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


4
我从speedtest-cli获得的结果大大低于我从speedtest.net获得的速度。speedtest-cli下载18.27 Mbits / s上传3.43 Mbits / s speedtest.net下载59.38 Mbits / s上传12.14 Mbits / s我不能认为speedtest-cli无论如何都是对网络速度的有效测试。

2
@ user375058:speedtest-cli使用与SpeedTest.net相同的服务器(等)。您应该将speedtest-cliwww.speedtest.net等效,只是使用不同的前端。如果它们都使用同一台服务器,如果您始终获得明显不同的结果,我将感到惊讶。如果他们使用的不是同一台服务器,那么您没有进行比较的依据。最后,我对这两个实用程序的结果每次运行之间的差异为2-4倍。我建议您测试2-4台服务器,并为每台服务器执行3-4次运行并比较工具。
jvriesem 2015年

@ user375058:我实际上只是按照我的建议去做。有关我的结果,请参见下面我的评论中的链接。
jvriesem 2015年

1
sudo apt install speedtest-cli
ColdCold

Answers:


753

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

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

curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py | python -

输出:

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

2018年更新:

使用pip install --user speedtest-cli可获得的版本可能比发行版存储库中可用的版本新。

2016年更新:

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

sudo apt install speedtest-cli
speedtest-cli

2
这似乎无法正常工作。我的BT Infinity降了50bBit,而升了20Mbit。但是结果显示上升了0.53Mbit,上升了0.2Mbit。??小数位数放置不正确?使用wget我可以得到4.27M / s(34Mbit)(虽然是其他一些服务器)?
Piotr Kula

34
因为它已经说过在这里:由于SPEEDTEST-CLI是一个Python应用程序,它是通过做更容易安装: pip install speedtest-cli 或: easy_install speedtest-cli 根据Python是如何在系统上安装,你可能需要root权限才能做到以上。
CrandellWS 2014年

1
确认speedtest-cli已损坏。不显示高于1Mbps的速度。声称要传送任何资讯时,不会传送任何资讯。
int_ua 2014年

5
这确实应该是一个可以接受的答案。。。认为@int_ua遇到兼容性问题或互联网问题。
皮皮曼2014年

2
这应该是正确的答案。速度测试意味着下载和上传。第一个答案仅能衡量下载速度,而不能完全反映您的互联网连接速度。特别是如果您在该计算机上托管某些东西!
埃米尔·博尔科尼

92

在命令行上尝试

wget --output-document=/dev/null http://speedtest.wdc01.softlayer.com/downloads/test500.zip

也尝试一下

sourceforge.net/projects/tespeed/

从上面的链接得到它


2
您能解释一下/dev/null代表什么吗?
关于natty的坚果,

12
它是专用文件,只是删除写入其中的数据,
Tachyons

2
对我而言,在使用python 2.7.8的Ubuntu 14.10上,该命令的wget --output-document=/dev/null http://speedtest.wdc01.softlayer.com/downloads/test500.zip工作效果比使用speedtset-cli后者似乎更好,并且^ C无法中断该命令。使用wget,我可以毫无问题地用^ C削减下载量
Willoczy 2014年

1
@mlissner,看起来像兆第一级,第二以MB为单位..
vp_arth

1
@mlissner 1.5 x 8 = 12。一个是kbps,另一个是KBps :-)
Tachyons

55

如果您不愿意安装iperf,则可以在使用该命令移动已知数据量的任何命令之前执行该time命令并求和。

iperf简单易用。

它需要一个客户端和服务器。

(在服务器上)

 user@server$ iperf -s

(在客户端上)

 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

更多细节


7
+1 iperf非常适合验证以太网和WIFI速度
kfmfe04 2013年

1
iperf对于LAN来说很棒,但是用户正在询问WAN。
IMTheNachoMan

34

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

要使用它,只需指向Internet中相对较大的文件,这样您就可以更好地估计它。

例如

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

在此处输入图片说明

当然,有一些建议:

  1. 使用好的服务器进行速度测试。对于我的链接,速度小于200KB,因此,如果速度较高,服务器将成为您的瓶颈,而不是您的实际速度。

  2. 您将看到的最高速度是您的连接和服务器的连接可以提供的最大速度。如果您的连接为512KB,而下载的位置为400KB,则最大连接数将为400KB,因为这是您从中下载服务器的最大连接数。

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

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

ARIA2

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

   sudo apt-get install aria2

要使用它很简单:

在此处输入图片说明

在图中,-x 4是我们希望使用多少个并行连接。下一行的CN参数显示了允许从该站点下载多少个活动并行连接。在这种情况下,CN为4。但是,如果我们尝试建立更多的连接,则会得到如下所示的内容:

在此处输入图片说明

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


1
wget还不能进行分段下载,即使用多个(并行)连接下载单个文件,因此,如果您的ISP限制了每1个连接的速度,您将无法获得准确的结果...它使用其他工具,至少可以使用分段下载(例如aria2),将是一种更精确的测试
Mladen B.

3
这不是速度测试,这只是下载速度测试!互联网速度测试意味着下载与下载!第二个答案以及所有其他提及speedtest-cli的问题都具有正确的方法。
埃米尔·博科尼

1
@EmilBorconi您是正确的,但在现实生活中,我们并未在此处对互联网速度进行基准测试,这只是您对任何家庭用户当前的平均速度测试,而无需使用诸如speedtest之类的网站。下载速度(对于试图查看是否有瓶颈的任何人来说足够了)是一个很好的测试。全面的降速测试会根据您的ISP检查您的整个速度范围。是的,那将是最好的解决方案,但是对于任何快速测试方案,即使是简单的wget都可以解决问题,因为通常人们比下载更担心下载速度。
Luis Alvarado

1
@LuisAlvarado很抱歉,如果我听起来很粗鲁,只是我认为人们应该能够完全理解他们的要求/接受的答案是什么。很多新手都会在论坛上关注他们,他们会假设/选择/停止接受的答案,并且在他们的学习中形成错误的形象。是的,下载是更重要的,然后是上传,除非您是个狂狂,每5分钟发布一次自拍照,然后仅因为您测试了下载的效果就可以了,所以与ISP展开斗争,但是上传却很糟糕……再次抱歉如果我的语气不礼貌,不想侮辱...
Emil Borconi 2015年

1
我之所以wgetcurl这更好,是因为wget显示MB/s(非常清楚是MBytes / s),而curl显示k(不是很明显就是KBytes / s)。
wisbucky

19

由于speedtest-cli是python应用程序,因此通过执行以下操作安装起来要容易得多:

pip install speedtest-cli

要么:

easy_install speedtest-cli

根据系统上Python的安装方式,您可能需要root用户才能执行上述操作。


7

我碰巧喜欢speedometerUbuntu cli。

speedometer -r eth0

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


多数民众赞成在实际上是我寻找了一段时间!谢谢!但我不喜欢它显示的是Kib而不是Kb或KB的速度
redbeam_

3

在大型文件上使用timeout命令运行wget的多个实例:

#!/bin/bash

timeout 5 wget -q url_1/100MB.zip &
timeout 5 wget -q url_2/file.zip &
timeout 5 wget -q url_3/sample.mov &
timeout 5 wget -q url_4/speech.mp4 &

然后编写一个脚本来计算下载的总字节数并除以5秒,您将得到一个字节/秒的数字。应该非常准确,您可以添加更多实例以最大程度地增加带宽。

我还没有测试完整的脚本,但是单行命令“超时5 wget url”有效,结果您得到了部分下载的文件(如果5秒不足以完成下载)。


这需要设置一些服务器...
Braiam 2013年

url_1,2,3,4可以是任何东西,例如公共服务器。
rexis

例如,timeout 5 wget http://speedtest.netcologne.de/test_100mb.bin -O /tmp/temp5sec然后分析文件大小并指定5:expr $(stat --printf="%s" /tmp/temp5sec) / 5 / 1024以kbit / s为单位
rubo77

3

您可以使用tespeed。这是使用的服务器进行的终端网络速度测试Speedtest.net。它使用最近的测试服务器,但也可以使用用户手动指定的服务器。

 git clone git://github.com/Janhouse/tespeed.git
 cd tespeed
 git submodule init
 git submodule update
 ./tespeed.py 

在此处输入图片说明

有关更多信息,请使用:

 ./tespeed.py  -h

它将提供更多的速度测试选项。


注意:必填lxml
Matt Matt

2

一个简单的单行代码,用于测试下载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

当我从无状态只读rootFS进行测试时,此方法非常有效,并且wget没有输出速度。
Josh Habdas

2

基于@rexis答案的简单bash脚本。您可以将自己的链接放在links数组中进行测试,也可以从文件中读取它们

#!/bin/bash
export LC_ALL=C  #make output in English eg for later use with "du | grep"

TMP_PATH=/tmp/speedtest_data/
TEST_TIME=5

rm -rf $TMP_PATH && mkdir $TMP_PATH

links=("http://client.cdn.gamigo.com/bp/eu/com/110a/BPClientSetup-2b.bin" "http://client.cdn.gamigo.com/bp/eu/com/110a/BPClientSetup-1b.bin" "http://client.cdn.gamigo.com/bp/eu/com/110a/BPClientSetup-1c.bin" "http://ftp.ntua.gr/pub/linux/ubuntu-releases-dvd/quantal/release/ubuntu-12.10-server-armhf+omap.img" "http://ftp.funet.fi/pub/Linux/INSTALL/Ubuntu/dvd-releases/releases/12.10/release/ubuntu-12.10-server-armhf+omap.img" "http://ftp.icm.edu.pl/pub/Linux/opensuse/distribution/13.2/iso/openSUSE-13.2-DVD-x86_64.iso")

echo "Testing download"

for link in ${links[*]}
do
    timeout $TEST_TIME wget -q -P $TMP_PATH $link &
done

wait

total_bytes=$(du -c -b $TMP_PATH | grep total | awk '{print $1}')

echo "Cleaning up"
rm -rf $TMP_PATH

speed=$(echo "scale=2; $total_bytes / $TEST_TIME / 128" |bc)

echo "Speed is $speed Mbit/s"

exit 0

一减-当我使用其他语言作为英语怎么办?参见:grep :) part
ceph3us

1

为了方便地获得每秒下载速度,我在$ HOME / .bash_aliases文件中定义以下内容:

speed-test='wget --output-document=/dev/null --report-speed=bits http://speedtest.wdc01.softlayer.com/downloads/test500.zip'

哪里:

--output-document=/dev/null 有效地丢弃wget输出

--report-speed=bits 显示wget下载速度平均值(以每秒位数(bps)为单位,而不是默认的每秒字节数(Bps))



0

我想要比speedtest.net更高级的东西以及仅依赖单个网站的各种解决方案。因此,我做了我通常做的事情,并编写了自己的解决方案:

https://github.com/cubiclesoft/network-speedtest-cli

从功能列表中:

  • SSH / SFTP(端口22)速度测试。
  • 公用TCP端口80、443和8080,以及使用自定义TCP / IP服务器的随机TCP端口速度测试,该服务器支持最高2.2 Gbps的下行速度和780 Mbps的上行速度。
  • 基本的网络延迟测试。
  • 加速Digital Ocean小滴,并测试SSH / SFTP和各种TCP端口的速度。
  • Speedtest.net和自定义的OoklaServer速度测试。产生与single.speedtest.net上的单个连接测试类似的结果。
  • 静默模式(-s)中的纯JSON输出。

这是一种更通用的解决方案,可以被其他应用程序使用。我设法查明了ISP网络问题,该问题导致SFTP下游速度提高了一倍,从而增加了幸福感。

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.