如何通过终端检查网速?
我想从Ubuntu上的终端检查我目前的互联网速度,而不是去speedtest.net这样的网站。 我该怎么做?
我推荐使用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 (xxxx)... 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
在命令行上试试这个
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
更多细节
好吧,我使用wget
。 那个小工具很好地告诉我我的速度。
要使用它只是指向相对较大的互联网文件,以便您可以更好地估计它。
例如
输入: wget http://hostve.com/neobuntu/pics/Ubu1.avi
将开始下载Ubu1.avi文件并以下载速度显示。
当然有几个建议:
-
使用优质服务器快速测试自己。 在我的链接的情况下,速度小于200KB,所以如果你有更高的速度,服务器将是你的瓶颈,而不是你的实际速度。
-
您将看到的最高速度是您的连接和服务器连接可以提供的最大速度。 如果您的连接数为512KB,并且您下载的位置为400KB,则最大连接数为400KB,因为它是您下载的服务器的最大连接数。
-
您需要至少进行5次测试才能进行可靠的速度检查,或至少进行一两分钟的测试。 这将有助于您进行更准确的检查。
-
您需要至少有4或5个不同的测试源才能获得更准确的速度。 切勿仅从同一站点进行测试,因为这可能会受到距离,服务器中的任何问题及其连接等因素的影响。始终从不同的服务器进行测试。
ARIA2
这是wget
的替代方案。 wget
的缺点是缺乏并行连接。 要使用aria2,我们需要下载它:
sudo apt-get install aria2
使用它很简单:
在图像中, -x 4是我们希望使用多少个并行连接。 下一行中的CN参数显示允许从该站点下载的活动并行连接数。 在这种情况下,CN是4.但是如果我们尝试拥有更多连接,我们会得到这样的结果:
我们设置了8个并行连接,但是网站只允许最多5个,如CN:5所示。 这可以通过-j选项来解决,该选项告诉aria2c我们想要的最大并发连接数(默认情况下为5),但如果服务器限制了这个,则-j将无效。
由于speedtest-cli是一个python应用程序,因此通过执行以下操作更容易安装:
pip install speedtest-cli
要么:
easy_install speedtest-cli
根据系统上Python的安装方式,您可能需要root才能执行上述操作。
我碰巧喜欢speedometer
Ubuntu cli。
speedometer -r eth0
观看传入数据速度的实时图表。
在大文件上使用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
欲了解更多信息:
./tespeed.py -h
它将为速度测试提供更多选择。
基于@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
一个简单的单行程序,用于测试下载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))
说明:
- 将时间戳存储在$ t中
- 下载100mb但不存储任何东西
- 计算
8 * 100mb / $t
您也可以尝试http://dl.getipaddr.net
他们使用curl(这是一个众所周知的命令行实用程序)来运行速度测试。
简而言之
wget https://raw.github.com/blackdotsh/curl-speedtest/master/speedtest.sh&& chmod u + x speedtest.sh && bash speedtest.sh