J'ai trouvé un bon moniteur qui me permet d'enregistrer une variété de données d'exécution d'un seul processus. Je recherche un équivalent qui fait de même pour l'utilisation de la bande passante. Idéalement, la commande devrait ressembler bwmon --pid 1 --log init.log
. Y en a-t-il? Peut-il s'exécuter sans privilèges d'administrateur?
monitoring
bandwidth
tshepang
la source
la source
Réponses:
quelque chose pour vous aider à démarrer (juste au cas où vous voudriez l'écrire vous-même):
commentaires:
stat --printf="%N\n" /proc/PID/exe | cut -d ' ' -f 3
la source
nc
paire client / serveur sur localhost, en envoyant un octet par seconde, et j'ai regardé/proc/<listening-nc-pid>/net/dev
. Puis j'ai couru une deuxièmenc
paire, en envoyant au rythme maximum. Le fichier que je regardais comptait très évidemment les données de la deuxième paire avec celles de la première paire. Fonctionnant sous Linux 2.6.32.function strftime never defined
; il a été corrigé en installant gawk ./proc/<pid>/net/dev
et/proc/net/dev
j'ai le même contenu ici. Par conséquent, le scipt signale uniquement le trafic pour eth0, pas pour le processus donné.eth0
, vu par le processus. Il ne compte pas les données envoyées par le processus via cette interface.Si vous êtes satisfait de la bande passante d'E / S générale utilisée (ou si votre programme fait presque entièrement des E / S réseau), vous pouvez regarder le
/proc/<pid>/io
fichier. Vous voulez les champsrchar
etwchar
. Vous voudrez peut-être soustraireread_bytes
etwrite_bytes
, car ils représentent des lectures et des écritures sur la couche de stockage. Voir la section 3.3 de http://www.kernel.org/doc/Documentation/filesystems/proc.txt .Si vous avez besoin de plus de résolution ... vous pourriez peut-être l'écrire en utilisant
lsof
etstrace
, bien que ce soit pénible de bien régler tous les cas d'angle. L'idée de base est d'analyser la sortiestrace -p <pid>
, saisissant le premier paramètre (= le descripteur de fichier) et la valeur de retour (= nombre d'octets) à partir deread()
,write()
,send()
et lesrecv()
appels ( NOTE il y a plusieurs autres syscalls à écouter, havre de paix I » t les a tous traqués). Jeter les valeurs négatives; ils indiquent des erreurs. Utilisezlsof -p <pid>
pour déterminer quels descripteurs de fichiers sont des sockets TCP / UDP et additionner les nombres par fd. Cette stratégie ne nécessite pas de root tant que vous possédez le processus que vous inspectez, mais ce serait vraiment poilu d'écrire, et encore moins d'écrire bien.la source
essayez les nethogs :
la source