作為 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 上運行。
方法二:使用 lsof 命令
lsof 或打開文件列表實用程序可幫助您列出 Linux 系統上的所有打開文件。您可以使用此實用程序查看在特定端口上打開的所有進程。
要使用 lsof 命令,如果您的系統上尚未安裝 lsof 實用程序,則必須使用以下命令安裝它:
$ sudo apt install lsof
使用 lsof 查看哪些服務正在偵聽特定端口。
例子:
$ sudo lsof -i :80
此命令列出所有使用 TCP 端口號 80 的進程。
方法三:使用 fuser 命令
fuser 命令指示正在使用命名文件、套接字或文件系統的進程 ID。您可以使用此命令查看在特定 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 端口。