??一、命令整體結構解析??
命令由兩部分通過管道符?|
連接:
netstat -tunlp
:核心網絡狀態統計命令,輸出指定類型的網絡連接信息;
grep
:文本搜索工具,用于過濾?netstat
的輸出結果,僅保留符合特定模式的行。
二、netstat
參數詳解??
netstat
是網絡狀態統計工具,通過不同參數組合可篩選所需信息。以下是?netstat -tunlp
中各參數的含義:
三、grep
的作用:過濾輸出結果??
grep
用于在?netstat
的輸出中搜索包含特定關鍵詞的行,常見用途包括:
查找??指定端口??(如?
80
、443
)的監聽情況;篩選??特定協議??(如?
tcp
、udp
)的連接;匹配??進程名或 PID??(如查找?
nginx
占用的端口)。
四、完整命令示例與輸出解析??
以下是不同場景下的命令示例及輸出說明:
??示例 1:查看所有監聽的 TCP/UDP 端口(含進程信息)
sudo netstat -tunlp | grep -E '(:80|:443|:22)'
命令說明??:
sudo
:以管理員權限運行(否則?-p
可能無法顯示進程信息);netstat -tunlp
:顯示所有 TCP/UDP 監聽端口及對應進程;grep -E '(:80|:443|:22)'
:通過正則表達式篩選包含?:80
、:443
或?:22
的行(即 80、443、22 端口的監聽情況)。??輸出示例??:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1234/nginx: master
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 5678/nginx: master
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 9012/sshd: /usr/sbin
第一列?
tcp
:協議類型;第二列?
0
:接收隊列大小;第三列?
0
:發送隊列大小;第四列?
0.0.0.0:80
:本地 IP:端口(0.0.0.0
表示監聽所有 IP);第五列?
0.0.0.0:*
:遠程 IP:端口(*
表示無特定目標);第六列?
LISTEN
:狀態(監聽中);第七列?
1234/nginx: master
:進程 PID(1234)和程序名(nginx 主進程)。
示例 2:僅查看 TCP 監聽端口(排除 UDP)?
sudo netstat -tnlp | grep 'LISTEN'
命令說明??:
-t
:僅 TCP;-n
:數字形式;-l
:監聽狀態;-p
:進程信息;grep 'LISTEN'
:過濾出狀態為?LISTEN
的行(冗余,因?-l
已限定,但可強化篩選)。??輸出示例??:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1234/nginx: master
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 5678/nginx: master
示例 3:查找特定進程(如 nginx)占用的端口?
sudo netstat -tunlp | grep 'nginx'
命令說明??:通過?
grep 'nginx'
篩選出所有與?nginx
進程相關的監聽端口。??輸出示例??:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1234/nginx: master
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 5678/nginx: master
示例 4:查看 UDP 監聽端口(如 DNS 服務)
sudo netstat -unlp | grep ':53'
命令說明??:
-u
:僅 UDP;grep ':53'
:篩選 53 端口(DNS 服務默認端口)。??輸出示例??:
udp 0 0 0.0.0.0:53 0.0.0.0:* 9012/systemd-resolve
五、注意事項??
??權限要求??:使用?
-p
參數時需?sudo
權限,否則無法顯示進程 PID 和程序名(會顯示?*
)。??協議過濾??:若需同時查看 TCP 和 UDP,可省略?
-t
或?-u
(如?netstat -nlp
顯示所有協議的監聽端口)。??端口沖突排查??:若發現某個端口被多個進程占用(罕見),可通過?
kill PID
終止多余進程(需謹慎操作)。??性能優化??:
ss
命令(Linux 內核級工具)比?netstat
更高效,推薦替代使用(如?ss -tunlp
)。
??總結??
netstat -tunlp | grep
是網絡排查的核心命令組合,通過參數組合和文本過濾,可快速定位指定端口、協議或進程的網絡監聽狀態,是服務器運維和故障診斷的必備工具。