乐闻世界logo
搜索文章和话题

How to find ports opened by process ID in Linux?

1 个月前提问
1 个月前修改
浏览次数18

1个答案

1

在Linux系统中,查找某个特定进程ID(PID)打开的端口可以通过多种方法完成。下面我将介绍一些常用的方法:

方法1:使用netstat命令

netstat是一个非常强大的网络工具,可以用来查看各种网络相关的统计信息,包括系统中每个进程使用的端口。要查找特定进程ID打开的端口,可以使用以下命令:

bash
netstat -ltnp | grep '<PID>'

在这里,-l 选项表示显示监听中的端口,-t 表示显示TCP端口,-n 表示以数字形式显示地址和端口号,-p 则是显示出每个连接或监听端口背后的进程ID和名称。grep '<PID>' 是用来过滤出含有指定进程ID的行。

例如,如果我们要查找进程ID为 1234 的端口,我们可以这样做:

bash
netstat -ltnp | grep '1234'

方法2:使用ss命令

ss命令是另一个查看套接字信息的工具,它可以作为netstat命令的现代替代品。与netstat类似,ss命令也能用来查找特定进程打开的端口:

bash
ss -ltnp | grep '<PID>'

这里的选项与netstat命令中的类似,-l 表示监听的端口,-t 表示TCP,-n 表示显示数字格式,-p 显示进程信息。使用grep过滤出特定进程ID。

例如,查找进程ID为 1234 的端口,可以使用:

bash
ss -ltnp | grep '1234'

方法3:直接查看/proc文件系统

Linux的/proc文件系统包含了系统运行时的各种信息,其中也包括每个进程的信息。每个进程都有一个以其PID命名的目录,例如/proc/<PID>,该目录中有一个fd子目录,列出了该进程打开的所有文件描述符,其中也包括网络套接字。

查看特定PID的端口可以用:

bash
ls -l /proc/<PID>/fd

然后通过查看符号链接,找出类型为socket的文件描述符。

示例

例如,如果我们想要检查进程ID为1234的端口使用情况,可以结合lsgrep命令进行检查:

bash
ls -l /proc/1234/fd | grep socket

这将显示该进程打开的所有套接字相关的文件描述符。

以上就是在Linux中查找特定进程ID打开的端口的几种方法。每种方法都有其适用场景,您可以根据自己的需要选择使用。

2024年8月5日 09:59 回复

你的答案