当前位置: 首页>>技术教程>>正文


Linux:找出进程正在侦听哪个端口号

,

作为Linux用户,我们有时需要知道特定进程正在侦听哪个端口号。所有端口都与OS中的进程ID或服务相关联。那么我们如何找到那个港口呢?本文介绍了三种不同的方法,供您查找进程正在侦听的端口号。

我们已经在Ubuntu 18.04 LTS系统上运行了本文描述的命令和过程。

方法1:使用netstat命令

Netstat或网络统计实用程序用于查看与网络连接有关的信息。这包括有关接口统计信息,路由表等的信息。该实用程序可在大多数Linux系统上使用,因此让我们利用它来查看有关某些进程在系统上使用的端口的信息。

对于使用netstat命令,如果尚未通过以下命令在系统上安装net-tools实用程序,则需要安装该实用程序:

$ sudo apt install net-tools

Install net-tools

然后运行以下命令:

$ sudo netstat -ltnp

Run netstat command

上面的命令基于以下功能提供netstat信息:

  • l:仅显示监听套接字
  • t:显示tcp连接
  • n:以数字形式显示地址
  • p:显示进程ID /程序名称

例如,在netstat命令的以上输出中,进程ID为950的Apache2程序在端口号80上运行。

您还可以通过将grep函数合并到命令中来过滤特定端口的统计信息。

例:

$ sudo netstat -ltnp | grep -w ':80'

该命令将具体告诉您哪个进程在端口号80上运行。

Check which program listens on port 80

方法2:使用lsof命令

lsof或“打开文件列表”实用程序可帮助列出Linux系统上的所有打开文件。我们可以使用此实用程序来查看在特定端口上打开的所有进程。

对于使用lsof命令,如果尚未通过以下命令在系统上安装lsof实用程序,则需要安装该实用程序:

$ sudo apt install lsof

Install lsof tool

让我们使用lsof查看在特定端口上侦听的服务。

例:

$ sudo lsof -i :80

该命令将列出所有使用TCP端口80的进程。

Check which application uses port 80 with lsof

方法3:使用fuser命令

fuser命令显示正在使用命名文件,套接字或文件系统的进程标识。我们可以使用此命令来查看在特定TCP端口上运行的进程ID。

对于使用fuser命令,如果尚未通过以下命令在系统上安装psmisc实用程序,则需要安装该实用程序:

$ sudo apt install psmisc

Install psmisc

让我们通过以下命令查看在TCP端口3306上运行的所有进程ID:

$ sudo fuser 3306/tcp

您可以在此命令中指定任何端口号以查看其侦听过程。

Use fuser command

在上面的输出中,您可以看到进程ID 975正在侦听TCP 3306。

为了查看此进程ID对应于哪个程序,请运行以下命令:

句法:

$ ps -p [processID] -o comm=

在我们的情况下:

$ ps -p [975] -o comm=

Check port of a specific process ID

输出显示进程ID 975对应于程序名称MySDLd。因此,程序MySQLd的进程ID 975正在侦听端口号3306。

通过本文中学习的三种方法,您可以轻松查看Linux上特定进程正在侦听哪个TCP端口。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9317.html,未经允许,请勿转载。