作为Linux用户,我们有时需要知道特定进程正在侦听哪个端口号。所有端口都与OS中的进程ID或服务相关联。那么我们如何找到那个港口呢?本文介绍了三种不同的方法,供您查找进程正在侦听的端口号。
我们已经在Ubuntu 18.04 LTS系统上运行了本文描述的命令和过程。
方法1:使用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上运行。
方法2:使用lsof命令
lsof或“打开文件列表”实用程序可帮助列出Linux系统上的所有打开文件。我们可以使用此实用程序来查看在特定端口上打开的所有进程。
对于使用lsof命令,如果尚未通过以下命令在系统上安装lsof实用程序,则需要安装该实用程序:
$ sudo apt install lsof
让我们使用lsof查看在特定端口上侦听的服务。
例:
$ sudo lsof -i :80
该命令将列出所有使用TCP端口80的进程。
方法3:使用fuser命令
fuser命令显示正在使用命名文件,套接字或文件系统的进程标识。我们可以使用此命令来查看在特定TCP端口上运行的进程ID。
对于使用fuser命令,如果尚未通过以下命令在系统上安装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端口。