Як отримати поточну швидкість завантаження та завантаження у терміналі?


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
Там ми йдемо. Зведено це до однієї неприємної заяви. Бутній.
Олі

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.