Yanıtlar:
İşin garibi, en kolay yolu bakmak gibi görünüyor /proc/net/dev. Bu dosyayı iki kez karşılaştırmak için (ikinci bir gecikmeyle) ve sonra toplam bayt değerlerini çıkarmak için aşağıdakileri yazdım. Bu durumda em1ağ bağdaştırıcısıdır, bu yüzden bakmak istediğiniz her şeyi değiştirin.
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)
Çıktı iki sayıdır. Saniyede alınan bayt, ardından saniyede gönderilen bayt.
İşte Oli'nin mükemmel çözümünün bir varyasyonu:
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'nin yaklaşımıyla aynı sonucu basacaktır:
$ 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
İlk değer, saniye başına bayt cinsinden indirme hızı ve ikincisi yükleme hızıdır. Şunlarla daha insan dostu bir biçim elde edebilirsiniz:
$ 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
wlp1s0bunun yerine kullanmak zorunda kaldım wlan0. Cevabı düzenlemeyeceğim çünkü bunun dağıtımına bağlı olduğunu biliyorum.