프로세스 PID가 수신 대기 중인 포트를 나열합니까(바람직하게는 iproute2 도구 사용)?

프로세스 PID가 수신 대기 중인 포트를 나열합니까(바람직하게는 iproute2 도구 사용)?

PID가 현재 수신 대기 중인 모든 포트를 나열하려고 합니다.

프로세스에 대한 데이터를 얻으려면 어떻게 해야 합니까?

답변1

iproute2 패키지를 사용할 수 있습니다 ss( 와 유사 netstat).

ss -l -p -n | grep "pid=1234,"

또는 (이전 iproute2 버전의 경우):

ss -l -p -n | grep ",1234,"

1234를 프로그램의 PID로 바꾸십시오.

답변2

도구를 사용하는 방법을 모르겠습니다 iproute2. 하지만 해결 방법으로 이것을 시도해 볼 수 있습니다.

lsof -Pan -p PID -i

당신이 찾고 있는 정보를 제공해야 합니다.


산출

lsof -Pan -p 27808 -i
COMMAND   PID   USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
httpd   27808 apache    5u  IPv6 112811294      0t0  TCP *:80 (LISTEN)
httpd   27808 apache    7u  IPv6 112811298      0t0  TCP *:8443 (LISTEN)
httpd   27808 apache    9u  IPv6 112811303      0t0  TCP *:443 (LISTEN)

여기서 이 명령을 받았어요여기하지만 모든 내용을 노트에 적어두었기 때문에 정확한 링크는 확실하지 않습니다. 하지만 거기에서도 볼 수 있습니다.

답변3

netstat이를 사용하여 각 청취 프로세스의 pid를 찾을 수 있습니다.

netstat - 네트워크 연결, 라우팅 테이블, 인터페이스 통계, 가장 무도회 연결 및 멀티캐스트 멤버십을 인쇄합니다.

-a, --all 수신 및 비수신(TCP의 경우 설정된 연결을 의미) 소켓을 표시합니다. 태그가 지정되지 않은 인터페이스를 표시하려면 --interfaces 옵션을 사용하십시오.

--numeric, -n 기호 호스트, 포트 또는 사용자 이름을 확인하는 대신 숫자 주소를 표시합니다.

-p, --program 각 소켓이 속한 프로그램의 PID와 이름을 표시합니다.

예는 다음과 같습니다.

# netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1507/rpcbind
tcp        0      0 0.0.0.0:51188               0.0.0.0:*                   LISTEN      1651/rpc.statd
tcp        0      0 0.0.0.0:1013                0.0.0.0:*                   LISTEN      1680/ypbind
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1975/sshd
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      1763/cupsd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      2081/master
tcp        0      0 127.0.0.1:27017             0.0.0.0:*                   LISTEN      2119/mongod
tcp        0     48 172.16.33.73:22             172.16.127.110:51850        ESTABLISHED 25473/sshd
tcp        0      0 172.16.33.73:22             172.16.127.110:51214        ESTABLISHED 24699/sshd
tcp        0      0 :::111                      :::*                        LISTEN      1507/rpcbind
tcp        0      0 :::9200                     :::*                        LISTEN      1994/java
tcp        0      0 :::9300                     :::*                        LISTEN      1994/java
tcp        0      0 :::22                       :::*                        LISTEN      1975/sshd
tcp        0      0 ::1:631                     :::*                        LISTEN      1763/cupsd
tcp        0      0 ::1:25                      :::*                        LISTEN      2081/master
tcp        0      0 :::59162                    :::*                        LISTEN      1651/rpc.statd

답변4

lsofPID를 모르고 프로그램 이름만 아는 경우 다른 방법이 있습니다.

lsof -Pa -p $(pgrep [programName]) -i

관련 정보