Comment savoir quelle application utilise le réseau?

9

Très occasionnellement, lorsque j'utilise mon Mac, je constate que ma connexion Internet ralentit. En utilisant Activity Monitor, je peux voir que c'est parce que quelque chose télécharge des données au taux maximum que ma connexion peut prendre en charge --- mais je ne sais pas comment en être responsable. Cela peut être dû à plusieurs choses différentes (synchronisation Dropbox; certaines applications effectuent une mise à jour automatique; plus récemment, il s'agissait d'un tampon vidéo dans un onglet de navigateur que j'avais oublié), il serait donc très pratique d'avoir un moyen de le dire quelle application est responsable de l'utilisation du réseau. Une telle chose est-elle possible sous OS X? Idéalement, je recherche une solution gratuite. (La ligne de commande est OK.) Je suis sur Snow Leopard si cela fait une différence.

Nathaniel
la source

Réponses:

6

Vous pouvez essayer ce dtraceone-liner:

sudo dtrace -n 'syscall::recvfrom:return { @[pid,execname] = sum(arg0); }'

Laissez-le fonctionner pendant un moment, puis appuyez sur Ctrl-C. Il affichera un résumé du nombre d'octets lus à partir des sockets, répartis entre les processus. Pour une vue plus détaillée, remplacez sumpar quantize. Ou tout simplement pour voir un nombre de lectures de socket, remplacez sumpar count.

Avertissement: je n'ai essayé que sur Lion, mais AFAIK aucun grand changement dans la capacité de trace ne s'est produit entre SL et Lion.

Harald Hanche-Olsen
la source
1
Merci beaucoup! Simple et efficace et fait exactement ce dont j'avais besoin. Fonctionne très bien sur Snow Leopard.
Nathaniel
... bien qu'en fait, en utilisant "somme" les chiffres semblent un peu bizarres - Google Chrome obtient généralement un nombre négatif (!). Mais en utilisant la quantification, ils semblent raisonnables.
Nathaniel
Des nombres négatifs, hein? C'est peut-être un cas de débordement. Ou si vous obtenez de petits nombres négatifs, n'oubliez pas que les appels système renvoient -1 en cas d'erreur. Si c'est un débordement, je suppose que cela ne se produira pas lorsque vous exécutez un noyau 64 bits.
Harald Hanche-Olsen
Ce sont des nombres négatifs de taille moyenne. Voici une sortie typique (prise lors du rechargement de cette page dans Chrome): 250 Google Chrome -159; 39 KernelEventAgen 1; 19 mDNSResponder 2240; mais je les interprète peut-être mal - lorsque j'utilise «quanitze», il y a une colonne «value» qui peut avoir des valeurs négatives et une colonne «count». Il semble que la commande sum rapporte la somme de (valeur) * (nombre). Peut-être que des valeurs négatives signifient des paquets entrants, ou quelque chose?
Nathaniel
Non, il s'agit uniquement de données entrantes ... Je suppose que Chrome effectue des interrogations fréquentes en appelant recvfrom avec un court délai défini dans le socket, auquel cas la valeur de retour -1 résulte s'il n'y a pas de données. Voir la page de manuel pour recvfrom.
Harald Hanche-Olsen
6

Pare-feu

Vous pouvez utiliser Little Snitch ou HandsOff . Ce sont d'excellents pare-feu et les deux ont une fonction "Moniteur réseau", qui fera le travail:

Little Snitch comprend un moniteur réseau, affichant des informations détaillées sur tout le trafic réseau entrant et sortant.
Une icône d'état dans la barre de menus fournit un résumé de l'activité actuelle du réseau, et une fenêtre de surveillance avec des informations plus complètes apparaît automatiquement en cas de nouveaux événements de trafic.

Hands Off est une application pour surveiller et contrôler l'accès des applications à votre réseau et à vos disques. Être en mesure de surveiller les activités normalement inaperçues vous permet de prendre des décisions éclairées concernant le transfert de vos informations privées, évitant ainsi la fuite d'informations confidentielles.

entrez la description de l'image ici entrez la description de l'image ici

Les moniteurs réseau de: Little Snitch (à gauche), HandsOff (à droite)

Nettop

Une solution cli gratuite et intégrée (malheureusement elle n'est pas incluse dans Snow Leopard) serait nettop . nettop regroupe le trafic par programme et par port et mesure diverses statistiques de réseau.

Autre

Il existe peu d'autres programmes, qui capturent et mesurent le trafic ( iftop , wirehark , tcpdump ), mais ils ne connaissent pas le pid d'origine. Pour établir la connexion, vous devez utiliser netstat .

mspasov
la source
Merci! J'ai modifié la question pour indiquer que je recherche idéalement une solution gratuite (30 €, c'est trop pour quelque chose que je n'utiliserais que très occasionnellement), mais s'il n'y a pas de moyen gratuit de le faire, alors je '' J'accepte cette réponse.
Nathaniel
Désolé mon mauvais. J'essaierai de trouver une alternative gratuite et mettrai à jour ma réponse.
mspasov
Ha! nettopétait nouveau pour moi. Ça a l'air pratique.
Harald Hanche-Olsen
J'accepterais cette réponse aussi si c'était possible. Si je passe à Lion, il semble que nettop sera vraiment pratique.
Nathaniel
4
sudo fs_usage -f network

vous donnera tous les accès au réseau par toutes les applications (et processus). Habituellement, le processus créant beaucoup de trafic est celui qui apparaît le plus souvent dans la sortie.

nohillside
la source
1
Merci, c'est vraiment utile. Je suis impressionné par le nombre de réponses utiles à cette question.
Nathaniel
1

Le "livre DTrace" a un script, soconnect.d , qui fait cela.

Copiez la version "Mac OS X", collez-la dans un fichier texte, puis exécutez-la depuis le terminal avec sudo dtrace -s soconnect.d.

Ken
la source
Mais cela ne vous donne pas une idée de la quantité de trafic réseau qu'un processus reçoit, n'est-ce pas? Pour autant que je sache, il ne fait que suivre les connexions.
Harald Hanche-Olsen
1

Activity Monitor a également des colonnes pour les octets reçus et envoyés depuis 10.9:

Lri
la source