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

376

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

    
kernel_panic 16.02.2012 - 15:24

11 答案

589

我建议使用 speedtest-cli 工具。我创建了一篇博文(测量互联网连接速度Linux命令行)详细介绍了它的下载,安装和使用。

简短版本如下:(无需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
    
给出答案 mweisel 19.03.2013 - 09:11
83

在命令行上试试

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

试试这个

sourceforge.net/projects/tespeed/

从上面的链接中获取

    
给出答案 Tachyons 16.02.2012 - 15:57
48

如果您无法安装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

更多详情

    
给出答案 One Zero 16.02.2012 - 16:21
31

我使用 wget 。那个小工具很好地告诉了我我的速度。

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

例如

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

当然有几条建议:

  1. 使用优质服务器加速测试。对于我的链接,速度小于200KB,所以如果你有更高的速度,服务器将成为你的瓶颈,而不是你的实际速度。

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

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

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

  5. ARIA2

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

       sudo apt-get install aria2
    

    使用它很简单:

    在图片中, -x 4 是我们希望使用的并行连接数。下一行中的CN参数显示允许从该站点下载的活动并行连接数。在这种情况下,CN是4.但是如果我们试图建立更多连接,我们会得到类似的东西:

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

        
给出答案 Luis Alvarado 16.02.2012 - 16:12
18

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

pip install speedtest-cli

或:

easy_install speedtest-cli

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

    
给出答案 BobC 02.12.2013 - 16:06
5

我碰巧喜欢 speedometer Ubuntu cli。

speedometer -r eth0

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

    
给出答案 6ft Dan 02.09.2016 - 23:22
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秒后得到一个字节/秒的数字。应该非常准确,您可以添加更多实例以最大化您的带宽。

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

    
给出答案 rexis 20.09.2013 - 04:29
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

它将为速度测试提供更多选择。

    
给出答案 pl_rock 12.09.2015 - 08:08
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 $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
    
给出答案 Darkside 24.03.2015 - 13:28
1

一个简单的单行程序,用于测试下载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
给出答案 rubo77 29.08.2015 - 09:29
0

您也可以尝试链接

他们使用curl(这是一个众所周知的命令行实用程序)来运行速度测试。

简而言之

wget 链接&& chmod u + x speedtest.sh&& bash speedtest.sh

    
给出答案 user385795 07.03.2015 - 19:17

阅读有关标签的其他问题