要查看linux中進程占用的端口,可使用netstat或ss命令。1. 使用netstat:執行sudo netstat -tulnp可列出所有監聽端口及其對應進程;2. 使用ss:推薦方式,執行sudo ss -tulnp效果類似但更高效;3. 根據端口號查找進程:如查80端口可用sudo ss -tulnp | grep ‘:80’或netstat對應命令;4. 注意事項:需root權限查看完整信息,區分tcp/udp及ipv4/ipv6協議。掌握這兩個工具能有效定位網絡問題。
在linux系統中,如果你想知道某個進程占用了哪個端口,或者想查看當前系統有哪些端口被占用,netstat 和 ss 是兩個非常實用的命令行工具。雖然 netstat 已經逐漸被 ss 取代,但兩者依然廣泛使用,掌握它們的用法可以幫助你快速定位網絡相關的問題。
1. 使用 netstat 查看端口與進程信息
netstat(network statistics)是一個功能強大的網絡統計工具,可以顯示各種網絡連接、路由表、接口統計等信息。
常用命令:
sudo netstat -tulnp
- -t:顯示TCP連接
- -u:顯示UDP連接
- -l:列出監聽狀態的端口
- -n:以數字形式顯示地址和端口號(不解析為服務名)
- -p:顯示進程ID和名稱(需要 root 權限)
輸出示例:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp6 0 0 :::80 :::* LISTEN 1234/nginx
可以看到,80端口被nginx進程(PID 1234)占用。
?? 注意:如果執行時沒有權限,可能看不到完整的進程信息,建議加上 sudo。
2. 使用 ss 替代 netstat,更高效快捷
ss(socket statistics)是 netstat 的現代替代品,速度更快,語法也更簡潔。
基本命令:
sudo ss -tulnp
參數含義與 netstat 類似:
- -t:TCP
- -u:UDP
- -l:監聽狀態
- -n:不解析服務名稱
- -p:顯示進程信息
輸出示例:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp LISTEN 0 128 *:80 *:* users:(("nginx",pid=1234,fd=6))
可以看出,同樣是80端口,由nginx進程(PID 1234)監聽。
? 推薦:對于新項目或日常排查問題,優先使用 ss,因為性能更好,響應更快。
3. 根據端口號查找對應進程
如果你已經知道端口號,可以直接過濾查找對應的進程。
例如查找占用80端口的進程:
sudo ss -tulnp | grep ':80'
或者使用 netstat:
sudo netstat -tulnp | grep ':80'
輸出結果中會包含進程的PID和名稱。
拿到PID后,可以通過以下命令查看進程詳細信息:
ps -p 1234
4. 常見問題與注意事項
- 權限問題:查看進程信息通常需要管理員權限,否則可能看不到 PID/Program name 字段。
- 不同協議的區別:
- IPv4 與 IPv6:
- netstat 默認同時顯示IPv4和IPv6
- 如果只想看IPv4,可以加 -4 參數;只看IPv6,加 -6
基本上就這些。掌握了 netstat 和 ss 的基本用法,就能輕松查看Linux中進程和端口的關系了。這兩個命令雖然看起來簡單,但在排查網絡問題時非常實用,尤其是結合管道符和grep進行過濾,效率更高。