Odpowiedzi:
Dziwnie wydaje się, że najłatwiejszym sposobem jest patrzenie /proc/net/dev. Napisałem następujące polecenie, aby porównać ten plik dwa razy (z drugim opóźnieniem), a następnie odjąć całkowitą wartość bajtów. W tym przypadku em1jest to karta sieciowa, więc po prostu zmień ją na cokolwiek, na co chcesz spojrzeć.
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)
Dane wyjściowe to dwie liczby. Odebrane bajty na sekundę, a następnie wysłane bajty na sekundę.
Oto odmiana doskonałego rozwiązania 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)
Wypisuje ten sam wynik, co podejście 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
Pierwsza wartość to szybkość pobierania w bajtach na sekundę, a druga to szybkość wysyłania. Możesz uzyskać format bardziej przyjazny dla człowieka dzięki:
$ 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
wlp1s0zamiast wlan0. Nie będę edytować odpowiedzi, ponieważ wiem, że to zależy od dystrybucji.