netstat 显示端口号而不是进程名

mar*_*mnl 5 ubuntu tcp netstat

我想看看哪个端口,例如 postgresql 正在监听,所以我使用:

netstat -l

但这试图变得聪明并打印进程名称而不是端口:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 localhost:postgresql    *:*                     LISTEN     
tcp        0      0 *:31416                 *:*                     LISTEN   
Run Code Online (Sandbox Code Playgroud)

如何使用 netstat 确定任何进程正在侦听的端口?

hee*_*ayl 6

netstat正在将(默认)端口转换为服务名称,它从/etc/services文件中获取此映射。

因此,您可以从/etc/services以下位置获取端口:

grep '^postgresql' /etc/services
Run Code Online (Sandbox Code Playgroud)

或者更好地添加-n选项以netstat防止任何(主机、端口、主机名)解析并以数字形式发布输出:

netstat -nl
Run Code Online (Sandbox Code Playgroud)

您可以通过添加-t仅显示侦听 TCP 套接字的选项来限制搜索界面(类似于-uUDP,-x对于 UNIX 域套接字):

netstat -nlt
Run Code Online (Sandbox Code Playgroud)

您还可以在结果上使用任何标准文本处理工具来仅获得所需的内容。