作為 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 或 list open files 實用程序可以幫助您列出 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。因此,進程 ID 為 975 的程序 MySQLd 正在偵聽端口號 3306 。
使用您在本文中學到的三種方法,您可以輕鬆地查看 Linux 中特定進程正在偵聽的 TCP 端口。