如何在终端中获取当前的上传和下载速度?


10

我希望终端输出网络连接的当前上传和下载速度。我不想实时监视速度。我只希望一个“静态”值能够将其写入文件中。

我该如何实现?

Answers:


14

奇怪的是,最简单的方法似乎正在研究/proc/net/dev。我编写了以下内容,对该文件进行两次比较(有第二个延迟),然后减去总字节值。在这种情况下em1是网络适配器,因此只需将其更改为所需的外观即可。

awk '/em1/ {i++; rx[i]=$2; tx[i]=$10}; END{print rx[2]-rx[1] " " tx[2]-tx[1]}' \
 <(cat /proc/net/dev; sleep 1; cat /proc/net/dev)

输出是两个数字。每秒接收的字节数,然后每秒发送的字节数。


3
好了 把它煮成一个awk语句。好可恶
奥利(Oli)

11

这是Oli出色解决方案的一种变化:

awk '{if(l1){print $2-l1,$10-l2} else{l1=$2; l2=$10;}}' \
  <(grep wlan0 /proc/net/dev) <(sleep 1; grep wlan0 /proc/net/dev)

它将打印出与Oli的方法相同的结果:

$ awk '{if(l1){print $2-l1,$10-l2} else{l1=$2; l2=$10;}}' \
>   <(grep wlan0 /proc/net/dev) <(sleep 1; grep wlan0 /proc/net/dev)
401500 30286

第一个值是以每秒字节数为单位的下载速率,第二个是上传速率。您可以通过以下方式获得更人性化的格式:

$ awk '{if(l1){print ($2-l1)/1024"kB/s",($10-l2)/1024"kB/s"} else{l1=$2; l2=$10;}}' \
    <(grep wlan0 /proc/net/dev) <(sleep 1; grep wlan0 /proc/net/dev)
398.771kB/s 82.8066kB/s

注意:在Ubuntu 18.04上,我必须使用wlp1s0代替wlan0。我不会编辑答案,因为我知道这取决于发行版。
丹尼尔·塞罗迪奥
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.