Jak sprawdzić, która aplikacja korzysta z sieci?


9

Bardzo rzadko podczas korzystania z komputera Mac zauważam, że moje połączenie internetowe zwalnia. Za pomocą Monitora aktywności widzę, że dzieje się tak, ponieważ coś pobiera dane z pełną szybkością, którą moje połączenie może obsługiwać --- ale nie wiem, jak powiedzieć, kto jest za to odpowiedzialny. Może to być spowodowane kilkoma różnymi rzeczami (synchronizacja Dropboksa; niektóre aplikacje wykonujące automatyczną aktualizację; ostatnio było to buforowanie wideo na karcie przeglądarki, o której zapomniałem), więc bardzo przydatny byłby sposób, aby powiedzieć która aplikacja jest odpowiedzialna za korzystanie z sieci. Czy taka możliwość jest możliwa w OS X? Idealnie szukam darmowego rozwiązania. (Wiersz poleceń jest OK.) Jestem na Snow Leopard, jeśli to robi różnicę.

Odpowiedzi:


6

Możesz wypróbować ten dtraceliner:

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

Pozwól mu działać przez chwilę, a następnie naciśnij Control-C. Wyświetli podsumowanie liczby bajtów odczytanych z gniazd, rozdzielonych między procesy. W celu bardziej szczegółowego widoku zastąpić sumprzez quantize. Lub po prostu, aby zobaczyć liczbę odczytów gniazd, zamień sumna count.

Oświadczenie: Próbowałem tego tylko na Lionie, ale AFAIK nie zmienił się między SL a Lionem i nie ma wielkich zmian w zdolnościach dtrace.


1
Wielkie dzięki! Prosty i skuteczny i robi dokładnie to, czego potrzebowałem. Działa dobrze na Snow Leopard.
— Nathaniel,

... chociaż w rzeczywistości przy użyciu „sumy” liczby wyglądają nieco dziwnie - Google Chrome zwykle otrzymuje liczbę ujemną (!). Ale przy użyciu kwantyzacji wyglądają rozsądnie.
— Nathaniel,

Liczby ujemne, co? Może to przypadek przepełnienia. Lub jeśli otrzymasz małe liczby ujemne, pamiętaj, że wywołania systemowe zwracają -1, jeśli wystąpił błąd. Jeśli jest przepełnione, domyślam się, że tak się nie stanie po uruchomieniu 64-bitowego jądra.
— Harald Hanche-Olsen

Są to średnie liczby ujemne. Oto typowe wyjście (zrobione podczas ponownego ładowania tej strony w Chrome): 250 Google Chrome -159; 39 KernelEventAgen 1; 19 mDNSResponder 2240; ale może po prostu źle je interpretuję - kiedy używam „quanitze”, pojawia się kolumna „wartość”, która może mieć wartości ujemne, i kolumna „liczba”. Wygląda na to, że polecenie sum zgłasza sumę (wartość) * (liczba). Może wartości ujemne oznaczają przychodzące pakiety lub coś takiego?
— Nathaniel

Nie, tu chodzi o przychodzące dane… Myślę, że chrome często odpytuje, wywołując recvfrom z krótkim limitem czasu ustawionym w gnieździe, w którym to przypadku zwracana jest wartość -1, jeśli nie ma danych. Odwołaj się do strony podręcznika.
— Harald Hanche-Olsen

6

Zapory ogniowe

Możesz użyć Little Snitch lub HandsOff . Są świetnymi zaporami ogniowymi i oba mają funkcję „Monitor sieci”, która wykona zadanie:

Little Snitch zawiera Monitor sieci, pokazujący szczegółowe informacje o całym przychodzącym i wychodzącym ruchu sieciowym.
Ikona stanu na pasku menu zawiera podsumowanie bieżącej aktywności sieci, a okno monitora z bardziej wyczerpującymi informacjami pojawia się automatycznie w przypadku nowych zdarzeń drogowych.

Hands Off to aplikacja do monitorowania i kontrolowania dostępu aplikacji do sieci i dysków. Możliwość monitorowania normalnie niezauważalnych czynności umożliwia podejmowanie świadomych decyzji dotyczących przekazywania prywatnych informacji, a tym samym unikanie wycieku poufnych informacji.

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

Monitory sieciowe: Little Snitch (po lewej), HandsOff (po prawej)

Nettop

Darmowe i wbudowane rozwiązanie cli (niestety nie jest zawarte w systemie Snow Leopard) to nettop . nettop grupuje ruch według programu i portu i mierzy różne statystyki sieci.

Inny

Istnieje kilka innych programów, które przechwytują i mierzą ruch ( iftop , wireshark , tcpdump ), ale nie znają oryginalnego pid. Aby nawiązać połączenie, powinieneś użyć netstat .


Dzięki! Zredagowałem pytanie, aby wskazać, że idealnie szukam darmowego rozwiązania (30 EUR to za dużo na coś, z którego korzystam bardzo rzadko), ale jeśli nie ma darmowego sposobu, to „ Przyjmuję tę odpowiedź.
— Nathaniel

Przepraszam moja wina. Spróbuję znaleźć darmową alternatywę i zaktualizuję moją odpowiedź.
— mspasov

Ha! nettopbył dla mnie nowy. Wygląda na przydatny.
— Harald Hanche-Olsen

Przyjęłbym również tę odpowiedź, gdyby to było możliwe. Jeśli przejdę na Lion, wygląda na to, że nettop będzie naprawdę przydatny.
— Nathaniel,

4
sudo fs_usage -f network

zapewni Ci dostęp do sieci dla wszystkich aplikacji (i procesów). Zwykle proces generujący duży ruch jest tym, który najczęściej pojawia się na wyjściu.


1
Dzięki, to jest naprawdę przydatne. Jestem pod wrażeniem liczby pomocnych odpowiedzi na to pytanie.
— Nathaniel,

1

„Książka DTrace” ma skrypt soconnect.d , który to robi.

Skopiuj wersję „Mac OS X”, wklej ją do pliku tekstowego, a następnie uruchom za pomocą terminala sudo dtrace -s soconnect.d.


Ale to nie daje pojęcia o ruchu w sieci, który otrzymuje proces, prawda? O ile mi wiadomo, śledzi tylko połączenia.
— Harald Hanche-Olsen

1

Monitor aktywności ma również kolumny dla odebranych i wysłanych bajtów od 10.9:

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.