Если вы хотите просто получить значение, вы можете использовать простую оболочку oneliner следующим образом:
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
параметр, и вы можете измерить переданные биты в секунду вместо полученных, используя tx_bytes
вместо rx_bytes
). Не забывай менятьeth0
на сетевое устройство, которое хотите контролировать.
Конечно, вы не ограничены отображением средней скорости (как упоминалось в других ответах, есть другие инструменты, которые покажут вам гораздо более приятный результат), но это решение легко можно использовать в сценариях для выполнения других задач.
Например, следующий сценарий оболочки (разделенный на несколько строк для удобства чтения) будет выполнять процесс offlineimap только тогда, когда 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, но и dash и другие реализации / bin / sh), а / bin / sh - это то, что действительно всегда устанавливается.