Я хочу, чтобы терминал выводил текущие скорости загрузки и загрузки моего сетевого подключения. Я не хочу следить за скоростью в режиме реального времени. Я просто хочу, чтобы «статическое» значение могло быть записано в файл.
Как мне этого добиться?
Странно самый легкий путь, кажется, смотрит на /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)
Вывод является двумя числами. Полученные байты в секунду сопровождаются отправленными байтами в секунду.
Вот изменение на отличном решении 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