作為 Linux 用戶,您可能需要知道特定進程正在偵聽的端口號。所有端口都與操作系統進程 ID 或服務相關聯。那麼我們如何找到那個端口呢?本文介紹了三種不同的方法來查找進程正在偵聽的端口號。

我在 Ubuntu 18.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 上運行的進程。

檢查監聽 80 端口的程序

方法二:使用 lsof 命令

lsof 或 list open files 實用程序可以幫助您列出 Linux 系統上所有打開的文件。您可以使用此實用程序查看特定端口上的所有打開進程。

要使用 lsof 命令,如果系統上尚未安裝 lsof 實用程序,則必須使用以下命令安裝它:

$ sudo apt install lsof

安裝 lsof 工具

讓我們使用 lsof 查看哪些服務正在偵聽特定端口。

例子:

$ sudo lsof -i :80

此命令列出使用 TCP 端口號 80 的所有進程。

使用 lsof 查看哪個應用程序正在使用端口 80。

方法三:使用 fuser 命令

fuser 命令使用命名文件、套接字或文件系統顯示進程 ID。您可以使用此命令找出在特定 TCP 端口上運行的進程 ID。

要使用 fuser 命令,如果系統上尚未安裝 psmisc 實用程序,則必須使用以下命令安裝它:

$ sudo apt install psmisc

安裝 psmisc

讓我們使用以下命令檢查 TCP 端口 3306 上運行的所有進程 ID:

$ sudo fuser 3306/tcp

您可以使用此命令指定任何端口號來查看偵聽進程。

使用 fuser 命令

在上面的輸出中,我們可以看到進程 ID 975 正在偵聽 TCP 3306。

要查看此進程 ID 對應於哪個程序,請運行以下命令:

句法:

$ ps -p [processID] -o comm=

在我們的例子中:

$ ps -p [975] -o comm=

檢查給定進程ID的端口

輸出顯示進程 ID 975 對應於程序名稱 MySDLd。因此,進程 ID 為 975 的程序 MySQLd 正在偵聽端口號 3306 。

使用您在本文中學到的三種方法,您可以輕鬆地查看 Linux 中特定進程正在偵聽的 TCP 端口。