找出哪些进程正在侦听 Linux 中的特定端口

在 Linux 中,端口是与操作系统中正在运行的服务相关联的逻辑通信端点。 端口完全由操作系统管理,每个端口都与特定的服务相关联。 端口可帮助管理员识别系统上正在运行哪些服务。

通常为每个端口分配一个编号。 端口号从 0 到 65535。低于 1024 的端口被称为 特权端口 并用于特殊协议。 例如,Web 流量 (HTTP) 通过端口 80,而 SSH 侦听端口 22。大于 1024 的端口被称为 非特权 端口,可用于测试目的。 例如,您可以将 Web 服务器配置为在其中一个端口上运行,而不是在其默认端口号上运行。

在本指南中,我们将重点介绍如何找出哪些进程正在侦听 Linux 中的哪些端口。 我们使用 Ubuntu 20.04 进行演示。

使用 netstat Linux 命令

Linux Netstat 命令是网络和统计这两个词的组合。 您可能已经猜到了,它是一个命令行实用程序,用于在 Linux 系统上显示网络和协议统计信息。 此外,它还允许您打印路由表、TCP 和 UDP 端点的状态以及有关您的网络接口的信息。

要查看哪个进程正在侦听特定端口,请使用以下语法:

# netstat -pnltu | grep -w port_number

让我们分解选项列表:

p – 显示进程名称和 ID

n – 显示端口地址

l – 仅列出监听套接字

t – 打印 TCP 连接

u – 打印出 UDP 连接

在下面的示例中,我们正在探测侦听端口 80 的服务。

# netstat -pnltu | grep -w 80

输出表明它是 Apache 正在侦听端口 80 的 webserver 服务。

检查在端口 3306 上侦听的服务。执行:

# netstat -pnltu | grep -w 3306