pid 없이 프로세스를 식별하는 방법은 무엇입니까?

pid 없이 프로세스를 식별하는 방법은 무엇입니까?

45136/tcp와 37208/udp라는 2개의 포트에서 수신 대기하는 프로세스가 있습니다(실제로는 동일한 프로세스라고 생각합니다). 그러나 netstat는 어떤 PID도 반환하지 않습니다.

netstat -antlp | grep 45136
tcp        0      0 0.0.0.0:45136           0.0.0.0:*           LISTEN      - 

"grep 37208"과 동일한 결과입니다.

나는 또한 lsof를 시도했다:

lsof -i TCP:45136

하지만 아무것도 반환하지 않습니다. 이것은 Extrusion을 새로 설치하는 것이므로 프로세스가 어떻게 될지 잘 모르겠습니다. 어떤 아이디어가 있나요?

답변 귀하의 의견에 감사드립니다. 그것이 무엇인지 압니다. nfs-server nfs-common을 제거했는데(dkpg --get-selections | grep nfs로 검색한 후) 알 수 없는 프로세스가 사라졌습니다. 이상하게도 커널 프로세스는 어떤 방식으로도 표시되지 않습니다.

두 분 모두에게 다시 한번 감사드립니다. ;)

답변1

네트워크 통계

거기에는 프로세스가 있는데, 귀하의 사용자 ID가 무엇인지 명확하지 않습니다. 이것은 lsof당신이 이것을 보지 못하도록 방지 하는 보호 계층입니다 . 명령을 다시 실행하되 해당 sudo명령을 접두사로 사용하십시오.

$ sudo netstat -antlp | grep 45136

lsof상단 출력에는 이에 대한 경고도 있습니다.

(모든 프로세스가 인식되는 것은 아니며, 소유하지 않은 프로세스 정보는 표시되지 않습니다. 모든 프로세스를 보려면 루트 권한이 있어야 합니다.)

$ netstat -antlp | grep 0:111
tcp        0      0 0.0.0.0:111       0.0.0.0:*     LISTEN      -                   

$ sudo netstat -antlp | grep 0:111
tcp        0      0 0.0.0.0:111       0.0.0.0:*     LISTEN      1248/rpcbind

봄 여름 시즌

운이 좋지 않다면 그럴 netstat수도 ss있습니다. 여전히 을 사용해야 하며 sudo출력이 더 비밀스러워질 수 있습니다.

$ ss -apn|grep :111
LISTEN     0      128         :::111             :::*     
LISTEN     0      128          *:111              *:*     

$ sudo ss -apn|grep :111
LISTEN     0      128         :::111             :::*      users:(("rpcbind",1248,11))
LISTEN     0      128          *:111              *:*      users:(("rpcbind",1248,8))

프로세스 ID가 아직 표시되지 않습니까?

어떤 경우에는 사용 중인 TCP 포트와 연결된 PID가 전혀 없습니다. NFS에 대한 내용은 다음에서 읽을 수 있습니다.@derobert의 답변, 이것은 그중 하나입니다. 아직 더 많은 것을 얻었습니다. 어떤 경우에는 SSH 터널링을 IMAP과 같은 서비스로 다시 사용합니다. 또한 프로세스 ID가 표시되지 않습니다.

어떤 경우든 더 자세한 형식을 사용할 수 있으며 netstat이는 궁극적으로 TCP 포트를 사용하는 프로세스를 더욱 명확하게 할 수 있습니다.

$ netstat --program --numeric-hosts --numeric-ports --extend

$ netstat --program --numeric-hosts --numeric-ports --extend |grep -- '-' | head -10
Proto Recv-Q Send-Q Local Address               Foreign Address             State       User       Inode      PID/Program name   
tcp        0      0 192.168.1.103:936           192.168.1.3:60526           ESTABLISHED root       160024310  -                   
tcp        0      0 192.168.1.1:2049            192.168.1.3:841             ESTABLISHED sam        159941218  -                   
tcp        0      0 127.0.0.1:143               127.0.0.1:57443             ESTABLISHED dovecot    152567794  13093/imap-login    
tcp        0      0 192.168.1.103:739           192.168.1.3:2049            ESTABLISHED root       160023970  -                   
tcp        0      0 192.168.1.103:34013         192.168.1.3:111             TIME_WAIT   root       0          -                   
tcp        0      0 127.0.0.1:46110             127.0.0.1:783               TIME_WAIT   root       0          -                   
tcp        0      0 192.168.1.102:54891         107.14.166.17:110           TIME_WAIT   root       0          -                   
tcp        0      0 127.0.0.1:25                127.0.0.1:36565             TIME_WAIT   root       0          -                   
tcp        0      0 192.168.1.1:2049            192.168.1.6:798             ESTABLISHED tammy      152555007  -             

출력에 INODES가 포함되어 있는 것을 확인하면 이 정보를 사용하여 프로세스로 역추적할 수 있습니다.

$ find -inum 152555007

그러면 해당 프로세스로 안내할 수 있는 파일이 표시됩니다.

인용하다

답변2

또 다른 옵션은 소켓이 프로세스에 속하지 않고 커널에 속한다는 것입니다. 일반적인 예는 NFS입니다.

Watt:~# netstat -ltp | egrep -- '-[[:space:]]*$'
tcp        0      0 *:nfs                   *:*                     LISTEN      -               
tcp        0      0 *:48131                 *:*                     LISTEN      -               
tcp6       0      0 [::]:55607              [::]:*                  LISTEN      -               
tcp6       0      0 [::]:nfs                [::]:*                  LISTEN      -               

일반적으로 이러한 항목을 식별하는 좋은 방법이 확실하지 않습니다. NFS의 특별한 경우에는 rpcinfo다음과 같은 정보를 얻을 수 있습니다.

anthony@Watt:~$ rpcinfo -p | grep 48131
    100021    1   tcp  48131  nlockmgr
    100021    3   tcp  48131  nlockmgr
    100021    4   tcp  48131  nlockmgr

불행히도 이것은 IPv4에서만 작동합니다. v6를 얻으려면 포기해야 합니다 -p. 그러면 포트 번호가 어리석은 방식으로 표시됩니다. 즉, IP 주소의 두 개의 추가 옥텟으로 표시됩니다. 따라서 포트 55607은 다음과 같습니다.217.55(왜냐하면217 × 256 + 55 =55607):

anthony@Watt:~$ rpcinfo  | grep -i 217.55
    100021    1    tcp6      ::.217.55              nlockmgr   superuser
    100021    3    tcp6      ::.217.55              nlockmgr   superuser
    100021    4    tcp6      ::.217.55              nlockmgr   superuser

관련 정보