在 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 的 Web 服務器服務。

檢查監聽端口 3306 的服務。嵌入:

# netstat -pnltu | grep -w 3306

使用 lsof 命令

lsof 命令是 List Open Files 的首字母縮寫,是用於列出打開的文件和目錄的命令。一起 -一代 選項。您可以查看偵聽特定端口的服務。

在下面的示例中,我們正在尋找一個偵聽 TCP 端口 22 的服務,即 SSH(安全外殼)服務。

# lsof -i TCP:22

使用 fuser 命令

最後是 fuser 命令。 fuser 實用程序是一個智能命令行工具,用於使用套接字、文件或目錄查找進程。它還顯示了進程的類型、每個進程的 PID、擁有該進程的用戶等等。

如鏡像所顯示,要使用 fuser 查找在端口上偵聽的服務,首先找到進程的 PID。

# fuser 22/tcp

在此之後,調用 ps 命令以顯示服務的名稱。消息 34093 是上一條命令得到的進程的PID

# ps -p 34093 -o comm=

結論是

我們已經看到了三種方法可以用來揭示在 Linux 系統上偵聽特定端口的進程。希望它運行良好。