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.