C'è un modo per scoprire quale applicazione utilizza la maggior parte della larghezza di banda in Linux? [chiuso]


56

Sto cercando un'utilità che possa mostrarmi quanta larghezza di banda utilizza ogni processo. Dovrebbe solo stampare i dati ed uscire dal modo in cui voglio alimentare quella lista in conky.

Risposte:


71

Puoi provare NetHogs .

NetHogs è un piccolo strumento "net top". Invece di suddividere il traffico per protocollo o per sottorete, come la maggior parte degli strumenti, raggruppa la larghezza di banda per processo . NetHogs non si basa su un modulo kernel speciale da caricare. Se improvvisamente c'è molto traffico di rete, puoi avviare NetHogs e vedere immediatamente quale PID sta causando questo. Ciò semplifica l'identificazione dei programmi che sono diventati selvaggi e stanno improvvisamente occupando la tua larghezza di banda.

NetHogs_Screenshot


Quasi esattamente ciò di cui ho bisogno, ma non funziona :(
— vava

Bene, cosa non funziona? Qualche errore? Non inizia affatto? Uscita console?
— Milde,

non funziona con ipv6
— zb '29

Devi eseguirlo come root. Si consiglia la modalità Promiscous. sudo nethogs -p eth2. Devi specificare la tua ethernet se non è eth0 di default.
— Anandu M Das,

@vava C'è un problema con quello nel repository, è stato risolto in 0.8.1 ma devi compilare dal sorgente (che è estremamente facile). Vedi questo post: askubuntu.com/questions/726601/…
— Matthew

6

Ce ne sono alcuni elencati qui .

I miei preferiti rimangono comunque iftop e tcpdump . Anche Wireshark è un'ottima opzione.


Ho problemi etici con Wireshark, se non da solo sulla rete ... A meno che tu non abbia un modo per farlo sondare solo l'host locale, nel qual caso sono interessato.
— Gnoupi,

5
Se non abiliti la modalità promiscua, dovrebbe catturare solo il traffico diretto al tuo host.
— Amok

Eh, nessuna di quelle utility può dirmi quale processo sta usando la maggior larghezza di banda ed è quello che sto cercando.
— vava,

5

Prova atop ... per ottenere il massimo da esso potrebbe essere necessario abilitare alcune patch del kernel aggiuntive (patch di contabilità I / O).

Se atopnon è un'opzione, utilizzare netstat -anp --inet(come root) per fornire un elenco di quali porte TCP / UDP sono utilizzate da quali processi (o eventualmente utilizzare lsofper quello). Da lì semplicemente iterare su ogni processo che ha un socket aperto e collegarsi ad esso usando ltrace -So straceper guardare le letture, le scritture, gli invii e le ricezioni o usare tcpdumpcon un filtro che specifica il tuo indirizzo IP locale e le porte TCP / UDP che erano elencati.

atopè sicuramente il più conveniente di questi ... se lo hai e il supporto del kernel necessario è installato. In passato ho avuto clienti e datori di lavoro installati sistemi speciali (diversi dalle loro immagini di produzione) al solo scopo di supportare la profilazione degli I / O utilizzando atop. Tuttavia, queste altre tecniche ti porteranno lì.

Sono sicuro che potremmo anche fare qualcosa usando SystemTap ... ma non conosco ricette facili precotte per farlo. SystemTap è molto uno strumento di analisi della programmazione.


se vuoi solo sapere quale processo sta controllando la rete, non la vera larghezza di banda utilizzata, puoi semplicemente usare netstat -anp --inete controllare le colonne Recv-QeSend-Q
— golimar
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.