Czy istnieje sposób, aby dowiedzieć się, która aplikacja wykorzystuje większość przepustowości w systemie Linux? [Zamknięte]

56

Szukam narzędzia, które może mi pokazać, ile przepustowości wykorzystuje każdy proces. Powinien po prostu wydrukować dane i wyjść, gdy chcę wprowadzić tę listę do conky.

vava
źródło

Odpowiedzi:

71

Możesz wypróbować NetHogs .

NetHogs to małe narzędzie „net top”. Zamiast rozkładać ruch według protokołu lub podsieci, jak większość narzędzi, grupuje przepustowość według procesu . NetHogs nie polega na ładowaniu specjalnego modułu jądra. Jeśli nagle pojawi się duży ruch w sieci, możesz uruchomić NetHogs i natychmiast sprawdzić, który PID to powoduje. Ułatwia to identyfikację programów, które oszalały i nagle zajmują przepustowość.

NetHogs_Screenshot

Milde
źródło
Prawie dokładnie to, czego potrzebuję, ale to po prostu nie działa :(
vava
Co nie działa? Jakieś błędy? Czy to wcale się nie zaczyna? Wyjście konsoli?
Milde
nie działa z ipv6
zb '29
Musisz uruchomić go jako root. Zalecany jest tryb promisowy. sudo nethogs -p eth2. Musisz podać swój Ethernet, jeśli domyślnie nie jest to eth0.
Anandu M Das
@vava Wystąpił problem z tym w repozytorium, został naprawiony w wersji 0.8.1, ale musisz budować ze źródła (co jest niezwykle łatwe). Zobacz ten post: askubuntu.com/questions/726601/…
Matthew
6

Jest sporo wymienione tutaj .

Moimi ulubionymi pozostają jednak iftop i tcpdump . Wireshark to również bardzo dobra opcja.

BinaryMisfit
źródło
Mam problemy etyczne z Wireshark, jeśli nie sam w sieci ... Chyba że masz sposób, aby sondować tylko hosta lokalnego, w takim razie jestem zainteresowany.
Gnoupi
5
Jeśli nie włączysz trybu promiscuous, powinien on przechwytywać tylko ruch kierowany do Twojego hosta.
Amok,
Huh, żadne z tych narzędzi nie może mi powiedzieć, który proces zużywa najwięcej pasma i właśnie o to mi chodzi.
vava
5

Spróbuj atop ... aby uzyskać jak najwięcej z tego, może być konieczne włączenie dodatkowych poprawek jądra (poprawek rozliczeniowych we / wy).

Jeśli atopnie ma takiej opcji, użyj netstat -anp --inet(jako root), aby podać listę portów TCP / UDP, które są używane przez które procesy (lub ewentualnie lsofdo tego celu). Stamtąd po prostu iteruj po każdym procesie, który ma otwarte gniazdo i albo dołącz do niego za pomocą ltrace -Slub, straceaby spojrzeć, czyta, zapisuje, wysyła i odbiera, lub użyj tcpdumpz filtrem określającym twój (e) lokalny (e) adres (e) i porty TCP / UDP które zostały wymienione.

atopjest z pewnością najwygodniejszym z nich ... jeśli masz go i zainstalowaną niezbędną obsługę jądra. W przeszłości miałem klientów i pracodawcy ustanowiły systemy specjalne (różni się od swoich obrazów produkcyjnych) wyłącznie w celu wspierania I / O przy użyciu profilowania atop. Jednak te inne techniki cię tam doprowadzą.

Jestem pewien, że moglibyśmy również coś zrobić przy użyciu SystemTap ... ale nie znam żadnych łatwych gotowych przepisów na to. SystemTap jest w dużej mierze narzędziem analizy programowania.

Jim Dennis
źródło
jeśli chcesz tylko wiedzieć, który proces blokuje sieć, a nie rzeczywistą używaną przepustowość, możesz po prostu użyć netstat -anp --ineti sprawdzić kolumny Recv-QiSend-Q
golimar