Linux中如何查找進程占用的端口?netstat與ss命令使用技巧

要查看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命令使用技巧

linux系統中,如果你想知道某個進程占用了哪個端口,或者想查看當前系統有哪些端口被占用,netstat 和 ss 是兩個非常實用的命令行工具。雖然 netstat 已經逐漸被 ss 取代,但兩者依然廣泛使用,掌握它們的用法可以幫助你快速定位網絡相關的問題。

Linux中如何查找進程占用的端口?netstat與ss命令使用技巧


1. 使用 netstat 查看端口與進程信息

netstat(network statistics)是一個功能強大的網絡統計工具,可以顯示各種網絡連接、路由表、接口統計等信息。

Linux中如何查找進程占用的端口?netstat與ss命令使用技巧

常用命令:

sudo netstat -tulnp
  • -t:顯示TCP連接
  • -u:顯示UDP連接
  • -l:列出監聽狀態的端口
  • -n:以數字形式顯示地址和端口號(不解析為服務名)
  • -p:顯示進程ID和名稱(需要 root 權限)

輸出示例:

Linux中如何查找進程占用的端口?netstat與ss命令使用技巧

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 字段。
  • 不同協議的區別
    • TCP 是面向連接的協議,常見于Web服務(如httphttps
    • UDP 是無連接的,常用于DNS、視頻流等場景
  • IPv4 與 IPv6
    • netstat 默認同時顯示IPv4和IPv6
    • 如果只想看IPv4,可以加 -4 參數;只看IPv6,加 -6

基本上就這些。掌握了 netstat 和 ss 的基本用法,就能輕松查看Linux中進程和端口的關系了。這兩個命令雖然看起來簡單,但在排查網絡問題時非常實用,尤其是結合管道符和grep進行過濾,效率更高。

? 版權聲明
THE END
喜歡就支持一下吧
點贊11 分享