어떤 프로세스가 포트에 바인딩되어 있는지 확인

어떤 프로세스가 포트에 바인딩되어 있는지 확인

나는 다음 명령을 사용하는 방법을 알고 있습니다.

lsof -i TCP 

(또는 lsof 매개변수의 일부 변형) 어떤 프로세스가 특정 포트에 바인딩되어 있는지 확인할 수 있습니다. 이는 8080에 바인딩하려는 작업을 시작하려고 할 때 유용하며 다른 작업에서는 이미 해당 포트를 사용하고 있지만 무엇인지는 모르겠습니다.

lsof를 사용하지 않고 이를 수행하는 쉬운 방법이 있습니까? 나는 많은 시스템에서 작업하는데 많은 시간을 소비하는데 lsof가 설치되지 않는 경우가 많습니다.

답변1

netstat -lnpPID와 프로세스 이름은 각 수신 포트 옆에 나열됩니다. 이는 Linux에서는 작동하지만 다른 모든 시스템(예: AIX)에서는 작동하지 않습니다. -tTCP만 필요한 경우 추가하세요.

# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:24800           0.0.0.0:*               LISTEN      27899/synergys
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      3361/python
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      2264/mysqld
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      22964/apache2
tcp        0      0 192.168.99.1:53         0.0.0.0:*               LISTEN      3389/named
tcp        0      0 192.168.88.1:53         0.0.0.0:*               LISTEN      3389/named

등.

답변2

Linux에서 사용할 수 있는 또 다른 도구는 다음과 같습니다.봄 여름 시즌. ~에서봄 여름 시즌Fedora 매뉴얼 페이지:

NAME
       ss - another utility to investigate sockets
SYNOPSIS
       ss [options] [ FILTER ]
DESCRIPTION
       ss is used to dump socket statistics. It allows showing information 
       similar to netstat. It can display more TCP and state informations  
       than other tools.

아래 샘플 출력 - 마지막 열에는 프로세스 바인딩이 표시됩니다.

[root@box] ss -ap
State      Recv-Q Send-Q      Local Address:Port          Peer Address:Port
LISTEN     0      128                    :::http                    :::*        users:(("httpd",20891,4),("httpd",20894,4),("httpd",20895,4),("httpd",20896,4)
LISTEN     0      128             127.0.0.1:munin                    *:*        users:(("munin-node",1278,5))
LISTEN     0      128                    :::ssh                     :::*        users:(("sshd",1175,4))
LISTEN     0      128                     *:ssh                      *:*        users:(("sshd",1175,3))
LISTEN     0      10              127.0.0.1:smtp                     *:*        users:(("sendmail",1199,4))
LISTEN     0      128             127.0.0.1:x11-ssh-offset                  *:*        users:(("sshd",25734,8))
LISTEN     0      128                   ::1:x11-ssh-offset                 :::*        users:(("sshd",25734,7))

답변3

AIX에서는 netstat 및 rmsock을 사용하여 프로세스 바인딩을 결정할 수 있습니다.

[root@aix] netstat -Ana|grep LISTEN|grep 80
f100070000280bb0 tcp4       0      0  *.37               *.*        LISTEN
f1000700025de3b0 tcp        0      0  *.80               *.*        LISTEN
f1000700002803b0 tcp4       0      0  *.111              *.*        LISTEN
f1000700021b33b0 tcp4       0      0  127.0.0.1.32780    *.*        LISTEN

# Port 80 maps to f1000700025de3b0 above, so we type:
[root@aix] rmsock f1000700025de3b0 tcpcb
The socket 0x25de008 is being held by process 499790 (java).

답변4

특정 포트(이번에는 8000) 뒤에 있는 프로세스를 확인하려고 할 때 문제가 발생한 적이 있습니다. 나는 다양한 lsof 및 netstat를 시도했지만 급락하여 브라우저를 통해 포트에 액세스하려고 시도했습니다(예:http://호스트 이름:8000/). 그런데 스플래시 화면이 나타났고 그 과정이 무엇인지 분명했습니다.스플렁크).

또 다른 생각: "ps -e -o pid,args"(YMMV)는 때때로 인수 목록에 포트 번호를 표시할 수 있습니다. 그렙은 당신의 친구입니다!

관련 정보