当前位置: 首页>>技术问答>>正文


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

, , ,

问题描述

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

最佳解决方案

我建议使用speedtest-cli工具。我创建了一篇博文(Measure Internet Connection Speed from the Linux Command Line),详细介绍了它的下载,安装和使用。

简短版本是这样的:(无需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

2016年更新:

speedtest-cli现在在Ubuntu储存库中。对于Ubuntu 16.04(Xenial),稍后使用:

sudo apt install speedtest-cli
speedtest-cli

次佳解决方案

在命令行上试试这个

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

也试试这个

sourceforge.net/projects/tespeed/

从上面链接中获得它

第三种解决方案

如果您不能安装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

More Details

第四种方案

那么我使用wget。那个小工具很好地告诉我我有什么速度。

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

例如

打字:wget http://hostve.com/neobuntu/pics/Ubu1.avi将开始下载Ubu1.avi文件并显示它以何种速度下载。

command-line,internet,download-speed,ubuntu

当然有几个建议:

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

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

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

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

ARIA2

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

   sudo apt-get install aria2

使用它很简单:

command-line,internet,download-speed,ubuntu

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

command-line,internet,download-speed,ubuntu

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

第五种方案

由于speedtest-cli是一个python应用程序,因此通过执行安装要容易得多:

pip install speedtest-cli

要么:

easy_install speedtest-cli

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

第六种方案

在大文件上运行多个具有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秒不足以完成下载)。

第七种方案

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

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

command-line,internet,download-speed,ubuntu

更多信息使用:

 ./tespeed.py  -h

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

第八种方案

我碰巧喜欢speedometer Ubuntu cli。

speedometer -r eth0

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

第九种方案

简单的基于@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=$(expr $total_bytes / $TEST_TIME)

echo "Speed is $speed Kb/s"

exit 0

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/84.html,未经允许,请勿转载。