Debian:檢查進程正在監聽的端口號

眾所周知,端口一次只能由一個進程或服務使用。端口標識系統上運行的特定服務或進程。在某些情況下,在進行故障排除期間,您需要知道特定進程正在偵聽的端口號。系統上運行的每個進程都與一個進程標識號(PID)和端口號相關聯。本文可以通過多種方式幫助您找出特定進程正在偵聽的端口號。

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

請注意,我們正在使用Debian 10來執行本文中提到的命令和過程。

方法1:使用netstat命令

Netstat是最常用的命令行實用程序,可用於顯示有關網絡連接,接口統計信息和路由表的信息。它也可以用來查找特定進程使用的端口號。不需要安裝它,因為它已經安裝在所有Linux發行版的存儲庫中。但是,如果尚未將其安裝在系統上,請使用以下命令進行安裝。

$ sudo apt install net-tools

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

$ sudo netstat -ltnp

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

使用netstat命令檢查端口

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

沒有sudo的netstat有限視圖

現在讓我們看看 ltnp 上面的命令具有以下含義。

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'

通過端口號檢查過程

方法2:使用lsof命令

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

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

$ sudo apt install lsof

安裝lsof

安裝完成後,您可以使用lsof實用工具來查找特定端口上正在運行的進程。運行不帶參數的lsof實用程序會返回很多難以理解的信息。但是,您可以在lsof中使用參數來過濾和聚焦所需的輸出。

然後使用以下命令找出哪個進程正在偵聽特定端口(例如端口22):

$ sudo lsof -i :22

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

使用lsof命令檢查端口

方法3:使用fuser命令

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

必須使用psmisc實用程序才能使用fuser命令。如果尚未將其安裝在系統上,請運行以下命令進行安裝。

$ 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。

在本文中,您學習了一些命令行實用程序,可用於查看特定進程正在偵聽的端口。

Debian:檢查進程正在監聽的端口號

Sidebar