Linux에서 대부분의 대역폭을 사용하는 응용 프로그램을 찾는 방법이 있습니까? [닫은]


56

각 프로세스에서 사용중인 대역폭의 양을 보여줄 수있는 유틸리티를 찾고 있습니다. 그 목록을 conky에 공급하려면 데이터를 인쇄하고 종료해야합니다.

답변:


71

NetHogs 시도해 볼 수 있습니다 .

NetHogs는 작은 'net top'도구입니다. 대부분의 도구와 마찬가지로 프로토콜 또는 서브넷 당 트래픽을 분류하는 대신 프로세스별로 대역폭을 그룹화합니다 . NetHogs는로드 할 특수 커널 모듈에 의존하지 않습니다. 갑자기 많은 네트워크 트래픽이 발생하면 NetHog를 시작하고 이로 인해 어떤 PID가 발생했는지 즉시 확인할 수 있습니다. 이를 통해 야생에 빠지고 갑자기 대역폭을 차지하는 프로그램을 쉽게 식별 할 수 있습니다.

NetHogs_Screenshot


거의 정확히 내가 필요하지만 작동하지 않습니다 :(
vava

뭐, 작동하지 않습니까? 오류가 있습니까? 전혀 시작되지 않습니까? 콘솔 출력?
Milde September

ipv6
zb와는

루트로 실행해야합니다. 프로 미스 쿠스 모드가 권장됩니다. sudo nethogs -p eth2. 이더넷이 기본적으로 eth0이 아닌 경우 이더넷을 지정해야합니다.
Anandu M Das

@vava repo에있는 문제가 있습니다 .0.8.1에서 수정되었지만 소스에서 빌드해야합니다 (매우 쉽습니다). 이 게시물 참조 : askubuntu.com/questions/726601/…
Matthew

6

여기에 몇 가지가 나와 있습니다 .

그러나 내가 좋아하는 것은 iftoptcpdump 입니다. Wireshark 도 매우 좋은 옵션입니다.


네트워크상에서 혼자가 아니라면 Wireshark에 윤리적 인 문제가 있습니다 ... 로컬 호스트 만 검사 할 수있는 방법이 없다면 관심이 있습니다.
Gnoupi

5
무차별 모드를 사용하지 않으면 호스트로 향하는 트래픽 만 캡처해야합니다.
Amok

허, 그 유틸리티들 중 어느 것도 어느 ​​프로세스가 가장 많은 대역폭을 사용하고 있는지 말해 줄 수 없습니다.
vava

5

시도 atop ... 그것의 최대한 활용하기 위해 당신이 몇 가지 추가 커널 패치 (I / O 회계 패치)를 활성화 할 수 있습니다.

atop옵션이 아닌 경우 netstat -anp --inet(루트)를 사용하여 어떤 프로세스에서 사용중인 TCP / UDP 포트 목록을 제공하십시오 (또는 가능한 경우 lsof). 거기에서 단순히 오픈 소켓을 얻고하거나 사용하여에 부착 된 각 과정을 반복 ltrace -S또는 strace(가) 사용, 읽고 쓰기, 전송 및 수신, 또는보고 tcpdump해당 지역의 IP 주소를 지정하는 필터와 TCP / UDP 포트를 그것은 나열되었습니다.

atop이것들 중 가장 편리합니다 ... 필요한 커널 지원이 설치되어 있다면. 과거에는 고객과 고용주가을 사용하여 I / O 프로파일 링을 지원하기위한 전용 시스템 (제작 이미지와 다른)을 설정했습니다 atop. 그러나 이러한 다른 기술을 사용하면 도움이됩니다.

SystemTap을 사용하여 무언가를 할 수 있다고 확신합니다 ...하지만이 작업을 수행하기위한 쉬운 사전 요리법을 모르겠습니다. SystemTap은 프로그래밍 분석 도구입니다.


실제 대역폭이 아닌 어떤 프로세스가 네트워크를 호깅하고 있는지 알고 싶다면을 사용 하고 열을 netstat -anp --inet확인할 수 있습니다.Recv-QSend-Q
golimar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.