/proc/net/tcp에 나타나지 않는 /proc/[pid]/net/tcp의 연결

/proc/net/tcp에 나타나지 않는 /proc/[pid]/net/tcp의 연결

모든 네트워크 연결을 얻고 이를 사용하여 PID와 연결하는 코드를 구현하고 있습니다.

tcp4의 경우 내가 나열한 각 pid에 대해 거기에서 소켓의 링크를 검색하고 해당 inode 번호를 읽고 연결에 대한 세부 정보를 얻기 /proc/pid/fd위해 검색합니다 ./proc/net/tcp

그러나 inode 번호를 찾아보면 다음과 같은 결과 /proc/net/tcp가 나옵니다.더 적은에서 검색했을 때보다 연결이 더 좋아졌습니다 /proc/[pid]/net/tcp. 예를 들어, 위 프로세스를 의존하면서 실행하면 /proc/net/tcp브라우저에서 열린 소켓만 볼 수 있는 반면, 의존하면 /proc/[pid]/net/tcp동생과 "java" 프로세스가 열린 연결을 갖는 것을 볼 수 있습니다.

그렇다면 나는 그것에 의존해야 하는가 /proc/net/tcp, 아니면 /proc/[pid]/net/tcp이 목적을 위해 의지해야 하는가? psutil은 Python에서 널리 사용되는 패키지이고 /proc/net/tcp한쪽에서는 이를 사용하고 있기 때문에 혼란스럽습니다 /proc/[pid]/net/tcp.

답변1

/proc/net예 심볼릭 링크 이므로 /proc/self/net프로세스와 확인된 프로세스가 다른 상태에 있는 경우에만 /proc/net/proc/[pid]/net가 다릅니다.[pid]/proc/net네트워크 네임스페이스.

모든 소켓을 나열하려면 동일한 네트워크 네임스페이스에 있는 두 프로세스의 모든 네임스페이스를 확인해야 합니다. 두 프로세스의 /proc/PID/ns/netinode 번호는 동일합니다. 이를 통해 시스템의 다양한 네트워크 네임스페이스를 모두 열거할 수 있습니다.

관련 정보