列出进程 PID 正在侦听的端口(最好使用 iproute2 工具)?

列出进程 PID 正在侦听的端口(最好使用 iproute2 工具)?

我正在寻找列出 PID 当前正在侦听的所有端口。

您建议我如何获取有关流程的此类数据?

答案1

您可以使用ssiproute2 包(类似于netstat):

ss -l -p -n | grep "pid=1234,"

或(对于较旧的 iproute2 版本):

ss -l -p -n | grep ",1234,"

将 1234 替换为程序的 PID。

答案2

我不知道使用工具的方法iproute2。但作为一种解决方法,您可以尝试一下这个。

lsof -Pan -p PID -i

应该为您提供您正在寻找的信息。


输出

lsof -Pan -p 27808 -i
COMMAND   PID   USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
httpd   27808 apache    5u  IPv6 112811294      0t0  TCP *:80 (LISTEN)
httpd   27808 apache    7u  IPv6 112811298      0t0  TCP *:8443 (LISTEN)
httpd   27808 apache    9u  IPv6 112811303      0t0  TCP *:443 (LISTEN)

我从这里得到这个命令这里但不确定确切的链接,因为我已将所有内容都记在笔记本中。但您也可以从那里查看。

答案3

您可以使用netstat它来找出每个监听进程的 pid。

netstat - 打印网络连接、路由表、接口统计信息、伪装连接和多播成员资格

-a, --all 显示侦听和非侦听(对于 TCP,这意味着已建立的连接)套接字。使用 --interfaces 选项,显示未标记的接口

--numeric , -n 显示数字地址,而不是尝试确定符号主机、端口或用户名。

-p, --program 显示每个套接字所属程序的 PID 和名称。

这是一个例子:

# netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1507/rpcbind
tcp        0      0 0.0.0.0:51188               0.0.0.0:*                   LISTEN      1651/rpc.statd
tcp        0      0 0.0.0.0:1013                0.0.0.0:*                   LISTEN      1680/ypbind
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1975/sshd
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      1763/cupsd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      2081/master
tcp        0      0 127.0.0.1:27017             0.0.0.0:*                   LISTEN      2119/mongod
tcp        0     48 172.16.33.73:22             172.16.127.110:51850        ESTABLISHED 25473/sshd
tcp        0      0 172.16.33.73:22             172.16.127.110:51214        ESTABLISHED 24699/sshd
tcp        0      0 :::111                      :::*                        LISTEN      1507/rpcbind
tcp        0      0 :::9200                     :::*                        LISTEN      1994/java
tcp        0      0 :::9300                     :::*                        LISTEN      1994/java
tcp        0      0 :::22                       :::*                        LISTEN      1975/sshd
tcp        0      0 ::1:631                     :::*                        LISTEN      1763/cupsd
tcp        0      0 ::1:25                      :::*                        LISTEN      2081/master
tcp        0      0 :::59162                    :::*                        LISTEN      1651/rpc.statd

答案4

lsof如果您不知道 PID,只知道程序名称,还有另一种方法:

lsof -Pa -p $(pgrep [programName]) -i

相关内容