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
lsof
PID를 모르고 프로그램 이름만 아는 경우 다른 방법이 있습니다.
lsof -Pa -p $(pgrep [programName]) -i