一、使用 netstat 檢查端口
netstat 是一個命令行工具,可以提供有關網絡連接的信息。
要列出正在偵聽的所有 TCP 或 UDP 端口,包括使用端口和套接字狀態的服務,請使用以下命令:
netstat -tunlp
此命令中使用的選項具有以下含義:
-t - 顯示 TCP 端口。
-u - 顯示 UDP 端口。
-n - 顯示數字地址而不是主機名。
-l - 僅顯示偵聽端口。
-p - 顯示進程的 PID 和名稱。僅當您以 root 或 sudo 用戶身份運行命令時,才會顯示此信息。
查詢指定端口通過grep過濾:
netstat -tnlp | grep :80
顯示示例:

注:
Proto - 套接字使用的協議。
Local Address - 進程偵聽的 IP 地址和端口號。
PID/Program name - PID 和進程名稱。
二、使用 ss 檢查端口
ss 是新的 netstat,命令選項大致相同。它缺少一些 netstat 功能,但暴露了更多的 TCP 狀態,而且速度稍快。
使用示例:ss -tunlp

三、使用 lsof 檢查端口
lsof 是一個功能強大的命令行實用程序,它提供有關進程打開的文件的信息。
在 Linux 中,一切都是文件,可以將套接字視為寫入網絡的文件。
要使用 lsof 獲取所有偵聽 TCP 端口的列表:
lsof -nP -iTCP -sTCP:LISTEN
使用的選項如下:
-n - 不要將端口號轉換為端口名稱。
-p - 不要解析主機名,顯示數字地址。
-iTCP -sTCP:LISTEN - 僅顯示 TCP 協議狀態為 LISTEN 的網絡文件。
使用示例:

要查找正在偵聽特定端口(例如 3306)的進程,請使用以下命令:
sudo lsof -nP -iTCP:3306 -sTCP:LISTEN
