Wie kann ich feststellen, welche Anwendung das Netzwerk verwendet?

9

Sehr gelegentlich stelle ich bei Verwendung meines Mac fest, dass sich meine Internetverbindung verlangsamt. Mit dem Aktivitätsmonitor kann ich feststellen, dass etwas Daten mit der vollen Geschwindigkeit herunterlädt, die meine Verbindung unterstützen kann - aber ich weiß nicht, wie ich feststellen kann, was dafür verantwortlich ist. Es kann durch verschiedene Ursachen verursacht werden (Dropbox-Synchronisierung; einige Apps führen ein automatisches Update durch; zuletzt war es eine Videopufferung in einem Browser-Tab, die ich vergessen hatte). Es wäre also sehr praktisch, eine Möglichkeit zu haben, dies zu erkennen Welche App ist für die Netzwerknutzung verantwortlich? Ist so etwas in OS X möglich? Idealerweise suche ich eine kostenlose Lösung. (Die Befehlszeile ist in Ordnung.) Ich bin bei Snow Leopard, wenn es einen Unterschied macht.

Nathaniel
quelle

Antworten:

6

Sie können diesen dtraceEinzeiler ausprobieren :

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

Lassen Sie es eine Weile laufen und drücken Sie dann Strg-C. Es wird eine Zusammenfassung der Anzahl der von Sockets gelesenen Bytes gedruckt, die auf die Prozesse verteilt sind. Für eine detailliertere Ansicht ersetzen Sie sumdurch quantize. Oder ersetzen Sie sumdurch , um die Anzahl der Socket-Lesevorgänge anzuzeigen count.

Haftungsausschluss: Ich habe dies nur bei Lion versucht, aber AFAIK hat zwischen SL und Lion keine großen Änderungen in der Dtrace-Fähigkeit festgestellt.

Harald Hanche-Olsen
quelle
1
Danke vielmals! Einfach und effektiv und macht genau das, was ich brauchte. Funktioniert gut auf Snow Leopard.
Nathaniel
... obwohl die Zahlen bei Verwendung von "Summe" etwas seltsam aussehen - Google Chrome erhält normalerweise eine negative Zahl (!). Aber mit Quantisierung sehen sie vernünftig aus.
Nathaniel
Negative Zahlen, oder? Vielleicht ist es ein Fall von Überlauf. Wenn Sie kleine negative Zahlen erhalten, denken Sie daran, dass Systemaufrufe -1 zurückgeben, wenn ein Fehler aufgetreten ist. Wenn es überläuft, würde es wahrscheinlich nicht passieren, wenn Sie einen 64-Bit-Kernel ausführen.
Harald Hanche-Olsen
Es sind mittelgroße negative Zahlen. Hier ist eine typische Ausgabe (aufgenommen beim erneuten Laden dieser Seite in Chrome): 250 Google Chrome -159; 39 KernelEventAgen 1; 19 mDNSResponder 2240; aber ich könnte sie nur falsch interpretieren - wenn ich 'quanitze' verwende, gibt es eine "Wert" -Spalte, die negative Werte haben kann, und eine "Anzahl" -Spalte. Es sieht so aus, als ob der Summenbefehl die Summe von (Wert) * (Anzahl) meldet. Vielleicht bedeuten negative Werte eingehende Pakete oder so?
Nathaniel
Nein, hier geht es nur um eingehende Daten. Ich denke, dass Chrome häufige Abfragen durch Aufrufen von recvfrom mit einem kurzen Timeout im Socket durchführt. In diesem Fall ergibt sich der Rückgabewert -1, wenn keine Daten vorhanden sind. Weitere Informationen finden Sie auf der Handbuchseite.
Harald Hanche-Olsen
6

Firewalls

Sie könnten Little Snitch oder HandsOff verwenden . Sie sind großartige Firewalls und beide verfügen über eine "Netzwerkmonitor" -Funktion, die die Aufgabe erfüllt:

Little Snitch enthält einen Netzwerkmonitor, der detaillierte Informationen zum gesamten eingehenden und ausgehenden Netzwerkverkehr anzeigt.
Ein Statussymbol in der Menüleiste bietet eine Zusammenfassung der aktuellen Netzwerkaktivität, und bei neuen Verkehrsereignissen wird automatisch ein Überwachungsfenster mit umfassenderen Informationen angezeigt.

Hands Off ist eine Anwendung zur Überwachung und Steuerung des Zugriffs von Anwendungen auf Ihr Netzwerk und Ihre Festplatten. Wenn Sie die normalerweise nicht wahrnehmbaren Aktivitäten überwachen können, können Sie fundierte Entscheidungen bezüglich der Übertragung Ihrer privaten Informationen treffen und so den Verlust vertraulicher Informationen vermeiden.

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Das Netzwerk überwacht: Little Snitch (links), HandsOff (rechts)

Nettop

Eine kostenlose und integrierte CLI-Lösung (leider nicht in Snow Leopard enthalten) wäre Nettop . nettop gruppiert den Verkehr nach Programm und Port und misst verschiedene Netzwerkstatistiken.

Andere

Es gibt nur wenige andere Programme, die den Datenverkehr erfassen und messen ( iftop , wireshark , tcpdump ), aber sie kennen die ursprüngliche PID nicht. Um die Verbindung herzustellen, sollten Sie netstat verwenden .

mspasov
quelle
Vielen Dank! Ich habe die Frage bearbeitet, um anzuzeigen, dass ich idealerweise nach einer kostenlosen Lösung suche (30 € sind zu viel für etwas, das ich nur sehr gelegentlich verwenden würde), aber wenn es keinen freien Weg gibt, dies zu tun, dann bin ich ' Ich werde diese Antwort akzeptieren.
Nathaniel
Es tut mir leid. Ich werde versuchen, eine kostenlose Alternative zu finden und meine Antwort aktualisieren.
Mspasov
Ha! nettopwar neu für mich. Sieht praktisch aus.
Harald Hanche-Olsen
Ich würde diese Antwort auch akzeptieren, wenn es möglich wäre. Wenn ich auf Lion aktualisiere, sieht es so aus, als wäre Nettop sehr praktisch.
Nathaniel
4
sudo fs_usage -f network

Sie erhalten alle Netzwerkzugriffe aller Anwendungen (und Prozesse). Normalerweise ist der Prozess, der viel Verkehr erzeugt, derjenige, der am häufigsten in der Ausgabe erscheint.

nohillside
quelle
1
Danke, das ist wirklich nützlich. Ich bin beeindruckt von der Anzahl hilfreicher Antworten auf diese Frage.
Nathaniel
1

Das "DTrace-Buch" hat ein Skript, soconnect.d , das dies tut.

Kopieren Sie die "Mac OS X" -Version, fügen Sie sie in eine Textdatei ein und führen Sie sie vom Terminal mit aus sudo dtrace -s soconnect.d.

Ken
quelle
Aber das gibt Ihnen keine Vorstellung davon, wie viel Netzwerkverkehr ein Prozess empfängt, oder? Soweit ich das beurteilen kann, werden nur Verbindungen verfolgt.
Harald Hanche-Olsen
1

Activity Monitor hat seit 10.9 auch Spalten für empfangene und gesendete Bytes:

Lri
quelle