Назад | Перейти на главную страницу

Как определить порт для процесса?

Я управляю RedHat 5.5 и мне было интересно, как я могу определить порт для процесса.

Это результат netstat и я пытаюсь найти процесс, связанный с портом 35670:

$ netstat -tulnp
tcp        0      0 0.0.0.0:35670               0.0.0.0:*                   LISTEN      -

Я пробовал следующее, чтобы связать процесс с этим портом, но безрезультатно:

$ lsof -nl | grep TCP
$ fuser 35670/tcp

Это наконец сработало для меня.

$ rpcinfo -p
100021    3   tcp  35670  nlockmgr

Не выполняя приведенную выше команду, как бы вы обнаружили этот порт? 35670 связан с nlockmgr.

Странная вещь nlockmgr не отображается, когда я делаю это:

$ ps aux

Вы должны выполнить netstat -tulnp как корень. В противном случае вы получите - вместо имени процесса.

Вот что говорится на странице руководства:

PID/Program name
   Slash-separated pair of the process id (PID) and process name of the process that owns the socket.  --program causes  this  column
   to  be  included.   You will also need superuser privileges to see this information on sockets you don't own.  This identification
   information is not yet available for IPX sockets.

За одним исключением: portmapper См. этот

Ты можешь использовать nmap с участием -sV возможность определить служебную информацию:

# nmap -sV -p 35670 localhost

Почему rpc.lockd скрыт от вывода netstat / lsof?

Вместо netstat вы можете использовать ss:

[mvutcovi@mvutcovi-lap ~]$ sudo ss -tulnp
Netid    State     Recv-Q    Send-Q         Local Address:Port          Peer Address:Port                                                
udp      UNCONN    0         0              192.168.122.1:53                 0.0.0.0:*        users:(("dnsmasq",pid=1698,fd=5))          
udp      UNCONN    0         0             0.0.0.0%virbr0:67                 0.0.0.0:*        users:(("dnsmasq",pid=1698,fd=3))          
udp      UNCONN    0         0                    0.0.0.0:68                 0.0.0.0:*        users:(("dhclient",pid=1980,fd=7))