Linux에서 이더넷 패킷을 보내는 프로세스를 어떻게 알 수 있습니까?


18

데비안 리눅스 시스템의 일부 프로세스가 eth0에 약 500KB / s를 쓰고 있음을 보여주는 gkrellm을 실행 중입니다. 어떤 프로세스인지 확인하고 싶습니다. netstat에 대해 조금 알고 있지만 gazillion open TCP 연결을 보여 주므로 트래픽에 대한 정보를 생성하지 못하는 것 같습니다.

누구든지 실제로 eth0 인터페이스를 사용 하는 프로세스 목록을 가져 와서 위반자를 추적 할 수있는 방법을 알고 있습니까?


후속 : 데비안 리눅스 배포판에는 nethogs이 문제를 확실하게 해결 하는 패키지가 포함되어 있습니다 . 마크에 꽤있는 관련 도구를 포함 iftop, netstatlsof.


iptraf좋은
Luv33preet

이것은 매우 짧은 UDP 교환을 위해 나를 위해 일했습니다 : serverfault.com/a/683327/119360
Luc

답변:



18

netstat -ptu모든 tcp 및 udp 연결에 대한 소유 프로세스 ID (표준 netstat 정보와 함께)를 제공합니다. 일반 사용자는 모든 프로세스를 식별 할 수 없습니다.

뭔가 일정한 트래픽의 공정한 금액을 보내는 경우에 당신은 그것을 볼 수 Recv-Q또는 Send-Q각각 열 2, 3.

예 :
Recv-Q
sudo watch -n .1 'netstat -tup | grep -E "^[t,u]cp[6]{0,1}" | sort -nr -k2'

Send-Q
sudo watch -n .1 'netstat -tup | grep -E "^[t,u]cp[6]{0,1}" | sort -nr -k3'

해당 프로세스가 다른 프로세스에 의해 트리거되고 있다고 의심되는 경우 ps axf.


(TCP 연결을 찾고 있다는 것을 알고 있다면 -u 플래그가 필요하지 않습니다.)
andol

5

데이터를 송수신하는 프로세스 만 찾으려면 수동 작업을 더 많이 수행하는 것이 lsof명령 을 실행하는 것 입니다. 이것은 각 프로세스에 대해 열려있는 모든 파일을 나열합니다. 여기에는 OS에 대한 파일 설명자이므로 네트워크 연결이 포함됩니다

이것이 당신이 찾고있는 것인지 확실하지 않습니다.


4

설치 iftop(단순 텍스트 기반) 또는 ntop(그래픽)


1
iftop인터페이스에서 대역폭 사용량 만 표시합니다.
quanta

그것은 그 이상을 보여줍니다. 기본적으로 호스트별로 분류합니다.
David Schwartz

인터페이스를 사용하는 모든 프로세스를 나열 할 수 있습니까? 그렇다면 명령과 옵션을 알려주시겠습니까?
quanta

1
직접 아닙니다. 그러나 일단 호스트를 찾으면 프로세스를 찾을 수 있습니다 (예 :) netstat -pn.
David Schwartz

3

tcpdump이 인터페이스에서 일부 패킷을 스니핑하는 데 사용하십시오 .

# tcpdump -vv -s0 -i eth0 -c 100 -w /tmp/eth0.pcap

클라이언트에 복사하고 Wireshark로 열어 어떤 일이 발생하는지 확인하십시오.


간단한 통계를 얻는 가장 쉬운 방법은 아니지만 약간 더 복잡하고 wireshark가 빛납니다!
Silverfire
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.