Linux:找出进程正在侦听的端口号
作为 Linux 用户,我们有时需要知道特定进程正在侦听哪个端口号。所有端口都与操作系统中的进程 ID 或服务相关联。那么我们如何找到这个端口呢?在本文中,我们将介绍三种不同的方法,您可以使用它们来查找进程正在侦听哪个端口。
我们已在 Ubuntu 22.04 LTS 系统上运行本文中描述的命令和过程。
方法一:使用netstat命令
Netstat 是网络统计实用程序,用于显示有关网络连接的信息。这包括有关接口统计信息、路由表等的信息。该实用程序在大多数 Linux 系统上都可用,因此我们使用它来查找系统上的某些进程正在使用哪些端口。
要使用 netstat 命令,您必须使用以下命令安装 net-tools 实用程序(如果您的系统上尚未安装):
sudo apt install net-tools
然后运行以下命令:
sudo netstat -ltnp
上面的命令根据以下功能给出 netstat 信息:
- l:仅显示监听套接字
- t:显示tcp连接
- n:以数字形式显示地址
- p:显示进程ID/程序名称
例如,在 netstat 命令的上述输出中,进程 ID 为 950 的 Apache2 程序正在端口号 80 上运行。
您还可以通过将 grep 函数合并到命令中来过滤特定端口的统计信息。
例子 :
sudo netstat -ltnp | grep -w ':80'
该命令将具体告诉您哪个进程正在端口号 80 上运行。
方法二:使用lsof命令
lsof 或打开文件列表实用程序有助于列出 Linux 系统上所有打开的文件。我们可以使用此实用程序查看特定端口上打开的所有进程。
要使用 lsof 命令,如果您的系统上尚未安装 lsof 实用程序,则需要通过以下命令安装它:
sudo apt install lsof
让我们使用 lsof 查看监听特定端口的服务。
例子 :
sudo lsof -i :80
此命令将列出使用 TCP 端口号 80 的所有进程。
方法3:使用fuser命令
fusion 命令显示哪些进程 ID 正在使用指定的文件、套接字或文件系统。我们可以使用此命令来查看特定 TCP 端口上运行的进程 ID。
要使用 fusion 命令,如果您的系统上尚未安装 psmisc 实用程序,则需要通过以下命令安装 psmisc 实用程序:
sudo apt install psmisc
让我们通过以下命令查看 TCP 端口 3306 上运行的所有进程 ID:
sudo fuser 3306/tcp
您可以在该命令中指定任意端口号来查看其监听进程。
在上面的输出中,您可以看到进程 ID 975 正在侦听 TCP 3306。
要查看该进程ID对应的是哪个程序,请运行以下命令:
句法 :
ps -p [processID] -o comm=
在我们的例子中:
ps -p [975] -o comm=
输出显示进程 ID 975 对应于程序名称 MySDLd。因此,MySQLd 程序的进程 ID 975 正在侦听端口号 3306。
通过本文学到的三种方法,您可以轻松查看Linux上特定进程正在监听哪个TCP端口。