我希望终端输出我网络连接的当前上传和下载速度。我不想实时监控速度。我只想要一个“静态”值,以便能够将其写入文件中。
我该如何实现它?
答案1
奇怪的是,最简单的方法似乎是查看/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)
输出是两个数字。每秒接收的字节数,然后是每秒发送的字节数。
答案2
以下是 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