Debian:找出進程正在偵聽的端口號


如您所知,一個端口一次只能由一個進程或服務使用。端口標識系統上運行的特定服務或進程。在進行故障排除時,您可能需要知道進程正在偵聽的端口號。系統上運行的所有進程都與進程標識號 (PID) 和端口號相關聯。本文介紹了幾種查找特定進程正在偵聽的端口號的方法。

在繼續本文之前,請確保您具有 root 權限。這有助於您獲得有關係統上運行的進程的全面信息。

請注意,您正在使用 Debian 10 執行本文中描述的命令和過程。

方法一:使用netstat命令

Netstat 是最常用的命令行實用程序,可用於顯示有關網絡連接、接口統計信息和路由表的信息。它還可用於查找進程使用的端口號。它已安裝在所有 Linux 發行版的存儲庫中,無需安裝。但是,如果您的系統上尚未安裝它,請使用以下命令安裝它:

$ sudo apt install net-tools

要查找進程正在偵聽的端口號,請在終端中運行以下命令:

$ sudo netstat -ltnp

以下輸出顯示了某些進程使用的端口號及其進程 ID (PID)。

如果您沒有 sudo 權限並且在沒有 sudo 的情況下運行上述命令,您將看不到程序名稱和 PID,如以下輸出所示。

無限的 netstat 視圖 sudo

讓我們來看看 脂蛋白 上面的命令意味著:

l-顯示監聽套接字

t – 顯示 TCP 連接

n – 以數字格式顯示 IP 地址和端口號

顯示 p-PID / 程序名稱

查看 $ sudo netstat -ltnp 的輸出,第四列正是我們要查找的內容。進程正在偵聽的端口號。

要獲取單個進程的端口信息,只需使用 grep 命令通過管道傳輸 netstat 輸出。

例如,要根據“sshd”查找端口號,請使用以下命令:

$ sudo netstat –ltnp | grep ‘sshd’

檢查 sshd 端口

同樣,如果您想知道偵聽特定端口(例如端口 21)的進程的名稱,請使用以下命令:

$ sudo netstat -ltnp | grep -w ':21'

通過端口號檢查進程

方法二:使用 lsof 命令

您可以使用 lsof 命令查看系統上運行的進程打開的所有文件的列表。 Lsof 可以作為單一的信息源,否則需要大量的管理工具。 與 netstat 命令一樣,您需要 sudo 權限才能獲得更多詳細信息。

如果您的系統上尚未安裝 lsof,請使用以下命令將其安裝在您的終端中:

$ sudo apt install lsof

安裝 lsof

安裝後,您可以使用 lsof 實用程序找出特定端口上正在運行的進程。運行不帶參數的 lsof 實用程序會返回大量難以理解的信息。但是,在 lsof 中使用參數可以幫助您過濾掉並專注於您想要的輸出。

現在,要查找偵聽特定端口(例如端口 22)的進程,請使用以下命令:

$ sudo lsof -i :22

此命令返回在端口 22 上運行的所有進程。

使用 lsof 命令檢查端口

方法三:使用 fuser 命令

fuser 是一個 Linux 命令,用於查找正在使用文件、目錄或文件系統的進程 ID。您可以使用此命令找出特定端口上正在運行的進程。

使用 fuser 命令需要 psmisc 實用程序。如果您的系統上尚未安裝它,請運行以下命令進行安裝。

$ sudo apt install psmisc

安裝 psmisc 包

要查看任何端口上正在運行哪些進程,假設 TCP 端口為 22,請在終端中運行以下命令:

$ sudo fuser 22/tcp

定影命令

上面的命令返回監聽端口號 22 的進程。現在,要根據任何進程 ID 顯示進程名稱,請使用以下命令語法:

$ ps -p [processID] -o comm=

在我們的例子中

$ ps -p [5859] -o comm=

用ps檢查端口

從上面的輸出中,您可以找到進程 ID 5859 的進程名稱 sshd。這意味著進程 ID 為 5859 的 sshd 正在偵聽端口 22。

在本文中,您了解了一些命令行實用程序,您可以使用這些實用程序查看特定進程正在偵聽哪些端口。



Source link