Якщо ви хочете просто отримати значення, ви можете використовувати простий вкладиш оболонки наступним чином:
S=10; F=/sys/class/net/eth0/statistics/rx_bytes; X=`cat $F`; sleep $S; Y=`cat $F`; BPS="$(((Y-X)/S))"; echo $BPS
Він покаже вам середнє значення "отриманих байтів в секунду" протягом 10 секунд (ви можете змінити період, змінивши S=10
параметр, і ви можете виміряти передану BPS замість отриманої BPS, використовуючи tx_bytes
замість rx_bytes
). Не забудьте змінити eth0
мережевий пристрій, який ви хочете контролювати.
Звичайно, ви не обмежуєтесь відображенням середньої швидкості (як згадувалося в інших відповідях, є й інші інструменти, які покажуть вам набагато приємніший результат), але це рішення легко написати для інших дій.
Наприклад, наступний сценарій оболонки (розділений на кілька рядків для читабельності) буде виконувати процес офлайн-карти лише тоді, коли 5-хвилинна середня швидкість передачі опуститься нижче 10 кбіт / с (імовірно, коли закінчується якийсь інший процес, що вимагає пропускної здатності):
#!/bin/sh
S=300; F=/sys/class/net/eth0/statistics/tx_bytes
BPS=999999
while [ $BPS -gt 10000 ]
do
X=`cat $F`; sleep $S; Y=`cat $F`; BPS="$(((Y-X)/S))";
echo BPS is currently $BPS
done
offlineimap
Зверніть увагу, що /sys/class/...
це специфікація Linux (це нормально, оскільки подавець вибрав linux
тег) і потребує неархаїчного ядра. Сам код оболонки сумісний з / bin / sh (тому працюватимуть не лише bash, але тире та інші реалізації / bin / sh), а / bin / sh - це те, що дійсно завжди встановлюється.