LinuxParty
En un servidor Linux, conocer el ancho de banda que estás consumiendo no solo es útil para diagnosticar problemas de red, sino también para controlar gastos si tu proveedor cobra por tráfico.
En este artículo veremos desde herramientas rápidas hasta un script en Bash que puedes usar en cualquier servidor y programar con cron
para llevar un registro histórico diario o mensual.
🔹 Métodos rápidos para ver el ancho de banda
1. ifstat
Una forma rápida y sencilla de ver el tráfico en todas las interfaces:
ifstat -t
En RHEL/CentOS:
sudo yum install ifstat
En Debian/Ubuntu:
sudo apt install ifstat
Otro artículo que interesaría leer: Medir y ajustar el ancho de banda con Iperf
2. nload
Interfaz visual en consola que muestra subida y bajada:
nload eth0
3. /proc/net/dev
Sin instalar nada, puedes consultar directamente los contadores:
cat /proc/net/dev
Esto muestra bytes recibidos y enviados desde el arranque. Si mides la diferencia entre dos lecturas separadas por unos segundos, obtendrás la velocidad.
🔹 Herramientas para diagnóstico
-
iftop – Muestra en tiempo real quién consume más ancho de banda:
sudo iftop -i eth0
-
bmon – Similar a
nload
, pero con más estadísticas:
bmon
🔹 Histórico y consumo mensual
Para llevar un registro de tráfico diario y mensual, vnstat
es muy recomendable:
sudo yum install vnstat # RHEL/CentOS sudo apt install vnstat # Debian/Ubuntu sudo systemctl enable vnstat sudo systemctl start vnstat vnstat -d # Por día vnstat -m # Por mes
🔹 Script en Bash para medir ancho de banda en tiempo real
Si prefieres algo ligero y sin depender de paquetes externos, aquí tienes un script que calcula el ancho de banda en Mbps usando los contadores del sistema:
#!/usr/bin/env bash # netwatch.sh — Mide ancho de banda en tiempo real (Mbps) por interfaz # Uso: ./netwatch.sh [-i interfaz] [-t intervalo_seg] set -euo pipefail IFACE="" INTERVAL=1 usage() { echo "Uso: $0 [-i interfaz] [-t intervalo_seg]"; exit 1 } while getopts ":i:t:h" opt; do case "$opt" in i) IFACE="$OPTARG" ;; t) INTERVAL="$OPTARG" ;; h|*) usage ;; esac done # Autodetección de interfaz si no se indica if [[ -z "${IFACE}" ]]; then IFACE=$(ip -o route get 1.1.1.1 2>/dev/null | awk '{for(i=1;i<=NF;i++) if ($i=="dev") {print $(i+1); exit}}') || true [[ -z "${IFACE}" ]] && IFACE=$(ip -o -4 addr show up | awk '$2!="lo"{print $2; exit}') fi # Comprobaciones [[ -z "${IFACE}" ]] && { echo "No se pudo detectar interfaz. Usa -i"; exit 1; } [[ -r "/sys/class/net/${IFACE}/statistics/rx_bytes" ]] || { echo "Interfaz ${IFACE} inválida."; exit 1; } printf "Midiendo en interfaz: %s (intervalo: %ss)\n" "$IFACE" "$INTERVAL" printf "%-8s %-10s %12s %12s\n" "HORA" "IFACE" "IN (Mbps)" "OUT (Mbps)" trap 'echo; echo "Saliendo..."; exit 0' INT while :; do t0=$(date +%s.%N) rx0=$(<"/sys/class/net/${IFACE}/statistics/rx_bytes") tx0=$(<"/sys/class/net/${IFACE}/statistics/tx_bytes") sleep "$INTERVAL" t1=$(date +%s.%N) rx1=$(<"/sys/class/net/${IFACE}/statistics/rx_bytes") tx1=$(<"/sys/class/net/${IFACE}/statistics/tx_bytes") dt=$(awk -v a="$t1" -v b="$t0" 'BEGIN{printf "%.6f", (a-b)}') drx=$((rx1 - rx0)) dtx=$((tx1 - tx0)) in_mbps=$(awk -v b="$drx" -v s="$dt" 'BEGIN{printf "%.2f", (b*8)/(s*1000000)}') out_mbps=$(awk -v b="$dtx" -v s="$dt" 'BEGIN{printf "%.2f", (b*8)/(s*1000000)}') printf "%-8s %-10s %12s %12s\n" "$(date +%H:%M:%S)" "$IFACE" "$in_mbps" "$out_mbps" done
🔧 Cómo usarlo
-
Guardar como
netwatch.sh
-
Dar permisos:
chmod +x netwatch.sh
-
Ejecutar:
./netwatch.sh
O especificando interfaz y intervalo:
./netwatch.sh -i eth0 -t 2
Ejemplo de salida:
Midiendo en interfaz: eth0 (intervalo: 1s) HORA IFACE IN (Mbps) OUT (Mbps) 12:04:11 eth0 3.27 1.12 12:04:12 eth0 8.91 0.56 12:04:13 eth0 0.14 0.09
📓 Cómo registrar el consumo con cron
El script anterior muestra datos en pantalla, pero también puedes hacer que registre el consumo en un archivo para revisarlo más tarde.
1. Modificar el script para volcar a log
Puedes reutilizar el mismo script así:
./netwatch.sh -i eth0 -t 60 >> /var/log/netwatch.log 2>&1
Esto medirá cada 60 segundos y guardará los resultados en /var/log/netwatch.log
.
2. Programar en cron
Edita el cron
del sistema:
sudo crontab -e
Y añade una línea como esta:
*/5 * * * * /ruta/netwatch.sh -i eth0 -t 300 >> /var/log/netwatch.log 2>&1
Esto:
-
Se ejecuta cada 5 minutos
-
Mide durante 300 segundos (5 minutos)
-
Añade la salida al log
3. Revisar el histórico
Para ver el consumo registrado:
less /var/log/netwatch.log
O filtrar por fecha/hora:
grep "2025-08" /var/log/netwatch.log
📌 Puntos de interés
-
Si quieres monitorizar en vivo: usa
iftop
,nload
o este script. -
Si buscas histórico mensual: instala
vnstat
. -
Si necesitas archivar el consumo: programa el script con
cron
y guarda los datos en un log.
Con este método podrás no solo diagnosticar problemas de red en tiempo real, sino también tener un histórico preciso del uso de ancho de banda de tu servidor.

-
Internet
- Los 100 dominios más antiguos de Internet
- Vodafone espera ofrecer servicios de ADSL en los próximos meses
- Alexa ToolBar para Firefox, ahora también como Motor de búsqueda.
- 7,5 millones de líneas de banda ancha en España
- La tecnología Wimax extenderá la banda ancha en América Latina
- Monitorizando la Latencia de una Red con Smokeping
- ISPConfig 2.2.17
- Introducir el PIN al Modem USB, en Linux.
- Las grandes de Internet ya no son tan grandes
- México espera contar con 70 millones de cibernautas en 2012
- ATM y Frame Relay ¿tienen los días contados?
- Blogueros de todo el mundo, cita en Cáceres del 3 al 4 de noviembre