Terminalde mevcut yükleme ve indirme hızları nasıl alınır?


10

Terminalin ağ bağlantımın mevcut yükleme ve indirme hızlarını vermesini istiyorum. Hızları gerçek zamanlı olarak izlemek istemiyorum. Ben sadece bir dosyaya yazmak mümkün "statik" bir değer istiyorum.

Nasıl başarabilirim?

Yanıtlar:


14

İş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.


3
Oraya gidiyoruz. Bir awk deyimine böldüm. Bootiful.
Oli

11

İş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

Not: Ubuntu 18.04'te wlp1s0bunun yerine kullanmak zorunda kaldım wlan0. Cevabı düzenlemeyeceğim çünkü bunun dağıtımına bağlı olduğunu biliyorum.
Daniel Serodio
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.