Come ottenere le attuali velocità di upload e download nel terminale?


10

Voglio che il terminale emetta le attuali velocità di upload e download della mia connessione di rete. Non voglio monitorare le velocità in tempo reale. Voglio solo un valore "statico" per poterlo scrivere in un file.

Come lo raggiungo?

Risposte:


14

Stranamente il modo più semplice sembra guardare /proc/net/dev. Ho scritto quanto segue per confrontare quel file due volte (con un secondo ritardo) e quindi per sottrarre i valori dei byte totali. In questo caso em1è la scheda di rete, quindi basta cambiarla in qualsiasi cosa tu abbia bisogno di guardare.

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)

L'output è di due numeri. Byte ricevuti al secondo seguiti da byte inviati al secondo.


3
Eccoci. Ridimensionato in una dichiarazione stravagante. Bootiful.
Oli

11

Ecco una variante dell'eccellente soluzione di 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)

Stampa lo stesso risultato dell'approccio di 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

Il primo valore è la velocità di download in byte al secondo e il secondo è la velocità di upload. È possibile ottenere un formato più adatto alle persone con:

$ 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

Nota: su Ubuntu 18.04 ho dovuto usare wlp1s0invece di wlan0. Non modificherò la risposta perché so che questo dipende dalla distribuzione.
Daniel Serodio,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.