Как узнать текущие скорости загрузки и загрузки в терминале?


10

Я хочу, чтобы терминал выводил текущие скорости загрузки и загрузки моего сетевого подключения. Я не хочу следить за скоростью в режиме реального времени. Я просто хочу, чтобы «статическое» значение могло быть записано в файл.

Как мне этого добиться?

Ответы:


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. Bootiful.
Оли

11

Вот вариант отличного решения Оли:

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)

Он выведет тот же результат, что и подход Оли:

$ 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. Я не буду редактировать ответ, потому что знаю, что это зависит от дистрибутива.
Даниэль Серодио
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.