如何识别进程的端口?

如何识别进程的端口?

我正在运行一个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

答案1

您可以使用nmapwith-sV选项来确定服务信息:

# nmap -sV -p 35670 localhost

为什么 rpc.lockd 在 netstat/lsof 输出中被掩盖了?

答案2

您必须netstat -tulnp以 root 身份执行。否则您将获得-而不是进程名称。

手册页上的内容如下:

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 请参阅

答案3

您可以使用以下命令代替 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))         

相关内容