Windows/Linux 系統中獲取埠被哪個應用程式佔用

  • 2020 年 3 月 13 日
  • 筆記

管理服務程式的時候,可能會查詢某個埠當前被哪個進程佔用。不僅能找出有問題的進程將其處理掉,也可以用來輔助檢查某個程式是否開啟了服務並在監聽埠。

Windows 系統

Windows 系統上可以使用 PowerShell 命令來查詢佔用某個埠的程式。

比如,我們需要查詢 5000 埠被佔用的進程是誰,可以在 PowerShell 中輸入命令:

Get-Process -Id (Get-NetTCPConnection -LocalPort 5000).OwningProcess

Linux 系統

在終端中輸入命令 lsof 可以查詢佔用某個埠的進程。

lsof -i:埠號

比如,我們需要查詢 5000 埠被佔用的進程是誰,可以在中斷中輸入命令:

walterlv@localhost:~# lsof -i:5000  COMMAND        PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME  dotnet_serve   731 root    3u  IPv6  12890      0t0  TCP *:5000

或者使用 netstat 查詢。

netstat -tunpl | grep 埠號

舉例:

walterlv@localhost:~# netstat -tunpl | grep 35412  tcp6   0   0 :::5000     :::*             731/dotnet_serve

本文會經常更新,請閱讀原文: https://blog.walterlv.com/post/get-port-owning-process.html ,以避免陳舊錯誤知識的誤導,同時有更好的閱讀體驗。

本作品採用 知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議 進行許可。歡迎轉載、使用、重新發布,但務必保留文章署名 呂毅 (包含鏈接: https://blog.walterlv.com ),不得用於商業目的,基於本文修改後的作品務必以相同的許可發布。如有任何疑問,請 與我聯繫 ([email protected])