Comment dois-je déterminer l'utilisation actuelle du réseau?
9
Je veux afficher l'utilisation actuelle du réseau (utilisation de la bande passante) d'une interface d'une boîte Debian sur un site Web. Il n'est pas censé être très élaboré ou précis, juste un simple chiffre tel que "52 Mbit / s".
Les moniteurs de bande passante réseau typiques tels que iftopme ne permettent pas d'extraire simplement une telle valeur.
Comment puis-je le récupérer au mieux?
Par exemple, je suppose que je pourrais analyser /proc/net/devtoutes les quelques minutes. Je ne sais pas si c'est vraiment la meilleure façon de le faire.
La meilleure façon de le faire est simplement d'analyser /proc/net/dev(soyez averti que ce /procn'est pas portable). Voici un bashscript que j'ai rapidement assemblé et qui devrait être capable de le calculer:
Gardez à l'esprit que sleepcela ne prend pas en compte le temps nécessaire pour effectuer les opérations dans la boucle while, ce qui est (très légèrement) inexact. Sur ma machine à coppermine de 600 MHz, la boucle prend 0,011 seconde - une inexactitude négligeable pour la plupart des utilisations. Gardez également à l'esprit lorsque vous utilisez les sorties kilo-octets / mégabits (commentées), bash ne comprend que l'arithmétique entière.
Je pense que cela devrait être la réponse choisie. Toutes les autres solutions relaient, en coulisses, l'analyse /proc/net/dev, sans vraiment comprendre quoi et comment cette magie se produit.
Eran
Cette solution a fonctionné pour moi sur un routeur / occupé.
cloneman
Utilisez date +%s.%Npour obtenir l'horodatage Unix pour chaque itération et divisez la différence d'octets par la différence d'horodatage. Ensuite, vous évitez le problème des itérations de boucle dépassant 1 s.
Arnavion
3
Il existe des moniteurs de trafic réseau comme vnstat
qui conserve des enregistrements mensuels de votre trafic, ou slurm qui prend ses valeurs directement de celles stockées dans le noyau. Il est disponible dans la plupart des dépôts distro.
Pouvez-vous expliquer cela un peu? Quel devrait être exactement le paramètre? Quelle est la signification de 125? Veuillez ne pas répondre dans les commentaires; modifiez votre réponse pour la rendre plus claire et plus complète.
/proc/net/dev
, sans vraiment comprendre quoi et comment cette magie se produit.date +%s.%N
pour obtenir l'horodatage Unix pour chaque itération et divisez la différence d'octets par la différence d'horodatage. Ensuite, vous évitez le problème des itérations de boucle dépassant 1 s.Il existe des moniteurs de trafic réseau comme vnstat qui conserve des enregistrements mensuels de votre trafic, ou slurm qui prend ses valeurs directement de celles stockées dans le noyau. Il est disponible dans la plupart des dépôts distro.
Voici ce que je vois quand je cours
slurm -i ra0
:la source
Voici un script shell très simple pour calculer cela:
il suffit de démarrer le script en passant le nom de l'interface, par exemple.
./shtraf eth1
la source
125
? Veuillez ne pas répondre dans les commentaires; modifiez votre réponse pour la rendre plus claire et plus complète.