無論是開發調試、服務器管理還是安全審計,了解哪些端口被哪些進程占用,都是保障系統穩定運行和高效排查問題的關鍵
本文將深入探討Linux下查看端口占用情況的多種方法,并輔以實際案例,幫助你快速掌握這一重要技能
一、為什么要查看端口占用 1.故障排查:當服務無法啟動或網絡請求異常時,檢查端口占用情況可以幫助快速定位問題,如端口沖突、服務未正確釋放端口等
2.安全審計:監控和審查系統開放的端口,及時發現并阻止潛在的非法入侵或惡意軟件
3.資源管理:了解系統端口使用情況,有助于合理分配資源,優化系統性能
4.開發調試:在開發過程中,確保應用程序使用正確的端口,避免端口沖突,提高開發效率
二、使用`netstat`命令 `netstat`是Linux下最經典的網絡工具之一,用于顯示網絡連接、路由表、接口統計信息等
要查看端口占用情況,可以使用以下命令: netstat -tulnvp - `-t`:顯示TCP端口
- `-u`:顯示UDP端口
- `-l`:僅顯示監聽狀態的端口
- `-n`:以數字形式顯示地址和端口號
- `-v`:顯示更多詳細信息(可選)
- `-p`:顯示占用端口的進程ID和程序名稱(需要root權限)
示例輸出: Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0- : LISTEN 1122/sshd udp 0 0 0.0.0.0:123 0.0.0.- 0: 678/ntpd 這里,`sshd`服務在TCP的22端口上監聽,`ntpd`服務在UDP的123端口上監聽
三、使用`ss`命令 `ss`(socket statistics)是`netstat`的現代替代品,功能更強大,性能更優
它提供了幾乎相同的選項,但語法略有不同
ss -tuln - `-t`:顯示TCP端口
- `-u`:顯示UDP端口
- `-l`:僅顯示監聽狀態的端口
- `-n`:以數字形式顯示地址和端口號
要查看占用端口的進程信息,可以使用: sudo ss -tulnp 示例輸出: State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 128 0.0.0.0:22 0.0.0.0: sshd LISTEN 0 128 【::】:22【::】: sshd `ss`命令的輸出更簡潔,且在某些情況下性能優于`netstat`
四、使用`lsof`命令 `lsof`(list open files)是一個強大的工具,可以列出當前系統打開的文件,包括網絡套接字
要查看特定端口的占用情況,可以結合`grep`使用: sudo lsof -i :22 示例輸出: COMMAND