cat /proc/net/dev a Linux: estadístiques de trànsit de les interfícies de xarxa
cat /proc/net/dev mostra les estadístiques de trànsit de cada interfície de xarxa des que es va engegar el sistema: bytes i paquets rebuts i enviats, errors, paquets descartats… És la font de la qual treuen les dades eines com ip -s link, ifconfig o els monitors de trànsit, i és molt pràctica per a scripts perquè és text pla i sempre hi és.
Exemple
/proc/net/dev és un fitxer virtual que genera el nucli i que pot llegir qualsevol usuari. En un Raspberry Pi amb Ethernet, Wi-Fi i Docker (sortida retallada):
$ cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 617026765 3299241 0 0 0 0 0 0 617026765 3299241 0 0 0 0 0 0
eth0: 29909715019 274398019 1 0 0 1 0 868095 758941145114 656889645 0 0 0 0 0 0
wlan0: 151557465 646819 0 0 0 0 0 572748 84840733 229073 0 0 0 0 0 0
docker0: 6119568 98835 0 0 0 0 0 0 2593511117 152332 0 224386 0 0 0 0 Hi ha una línia per interfície: lo (la interfície local, loopback), eth0 (cable), wlan0 (Wi-Fi), i les virtuals que creen programes com Docker (docker0, veth…, br-…). En sistemes amb noms «predictibles» les veuràs com enp3s0, eno1 o wlp2s0.
Què vol dir cada columna
Les primeres 8 xifres són de recepció (Receive) i les 8 següents, d’enviament (Transmit):
| Columna | Recepció | Enviament |
|---|---|---|
bytes | Bytes rebuts | Bytes enviats |
packets | Paquets rebuts | Paquets enviats |
errs | Paquets rebuts amb errors (dades corruptes, CRC incorrecte…) | Errors en enviar |
drop | Paquets descartats: han arribat bé però el sistema no els ha pogut processar (memòria intermèdia plena, protocol desconegut…) | Paquets que no s’han pogut enviar |
fifo | Desbordaments de la memòria intermèdia de la targeta | Ídem en enviar |
frame | Errors de trama (paquets mal formats) | — |
colls | — | Col·lisions (només en xarxes antigues amb concentradors o half-duplex) |
carrier | — | Pèrdues de senyal (cable desconnectat o defectuós) |
compressed | Paquets comprimits (només en enllaços antics tipus PPP) | Ídem |
multicast | Paquets multidifusió rebuts | — |
A l’exemple, eth0 ha rebut uns 28 GiB i n’ha enviat uns 707 (aquest Pi fa de servidor), amb només 1 error de recepció en milions de paquets.
Què has de vigilar
errsoframeque creixen: sovint és un problema físic: cable en mal estat, connector, o diferències de velocitat/dúplex amb el commutador.carrierque creix: el cable o l’enllaç es perd de manera intermitent.dropde recepció que creix ràpidament en un servidor amb molt de trànsit: el sistema no dona l’abast a processar els paquets.
Recorda que tots els comptadors són acumulats des de l’arrencada (o des que es va crear la interfície). El que importa és si augmenten, no el valor absolut.
Exemples útils
Totals per interfície en GiB, més fàcils de llegir:
$ awk 'NR>2 {sub(":","",$1); printf "%-8s RX: %8.2f GiB TX: %8.2f GiB\n", $1, $2/2^30, $10/2^30}' /proc/net/dev
lo RX: 0.57 GiB TX: 0.57 GiB
eth0 RX: 27.87 GiB TX: 706.84 GiB
wlan0 RX: 0.14 GiB TX: 0.08 GiB Un petit script que mostra la velocitat d’una interfície cada segon (desa’l com velocitat.sh i executa’l amb bash velocitat.sh eth0):
#!/bin/bash
# Mostra la velocitat de baixada i pujada d'una interfície cada segon
IF=${1:-eth0}
llegeix() { awk -v i="$IF:" '$1==i {print $2, $10}' /proc/net/dev; }
read rx1 tx1 < <(llegeix)
while sleep 1; do
read rx2 tx2 < <(llegeix)
echo "$IF baixada: $(( (rx2-rx1)/1024 )) KiB/s pujada: $(( (tx2-tx1)/1024 )) KiB/s"
rx1=$rx2; tx1=$tx2
done $ bash velocitat.sh eth0
eth0 baixada: 34 KiB/s pujada: 1154 KiB/s
eth0 baixada: 23 KiB/s pujada: 620 KiB/s Atura’l amb Ctrl+C.
L’alternativa moderna: ip -s link
La mateixa informació, més ben presentada, amb ip (l’eina que substitueix ifconfig i netstat -i, que estan obsoletes):
$ ip -s -h link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 1e:2b:3c:4d:5e:6f brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped missed mcast
29.9G 274M 1 0 0 868k
TX: bytes packets errors dropped carrier collsns
759G 657M 0 0 0 0 L’opció -h mostra les xifres en format llegible (29.9G). Cada comptador també es pot llegir per separat a /sys/class/net/<interfície>/statistics/, per exemple cat /sys/class/net/eth0/statistics/rx_bytes.
Per veure el trànsit en temps real de manera gràfica, hi ha eines com nload, iftop o bmon, i per guardar-ne un historial per dies i mesos, vnstat.
Comandes relacionades
- Configuració de xarxa a Linux: interfícies, passarel·la i DNS amb
ip. tcpdump: capturar i analitzar el trànsit.cat /proc/interrupts: interrupcions de la targeta de xarxa.cat /proc/meminfoicat /proc/mounts: altres fitxers útils de/proc.
Esta web usa cookies.