Si solo desea obtener el valor, puede usar un delineador de shell simple como este:
S=10; F=/sys/class/net/eth0/statistics/rx_bytes; X=`cat $F`; sleep $S; Y=`cat $F`; BPS="$(((Y-X)/S))"; echo $BPS
Le mostrará el promedio de "bytes recibidos por segundo" durante un período de 10 segundos (puede cambiar el período cambiando el S=10
parámetro, y puede medir BPS transmitido en lugar de BPS recibido usando en tx_bytes
lugar de rx_bytes
). No olvide cambiar eth0
al dispositivo de red que desea monitorear.
Por supuesto, no está limitado a mostrar la tasa promedio (como se menciona en otras respuestas, hay otras herramientas que le mostrarán un resultado mucho mejor), pero esta solución es fácilmente programable para hacer otras cosas.
Por ejemplo, el siguiente script de shell (dividido en varias líneas para facilitar la lectura) ejecutará el proceso de mapa fuera de línea solo cuando la velocidad de transmisión promedio de 5 minutos caiga por debajo de 10 kBPS (presumiblemente, cuando finalice algún otro proceso que consuma ancho de banda):
#!/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
Tenga en cuenta que /sys/class/...
es específico de Linux (lo cual está bien, ya que el remitente eligió la linux
etiqueta) y necesita un kernel no arcaico. El código de shell en sí es compatible con / bin / sh (por lo que no solo bash, sino también con dash y otras implementaciones de / bin / sh funcionarán) y / bin / sh es algo que realmente siempre está instalado.