我遇见的实际场景是,我想部署一个服务,但是发现我要用的端口已经被占用了,所以我想要方便地查看到底是哪个应用在监听这个端口,然后再关停它们。
方法一:资源监视器
在左下角的搜索页面中直接搜索"资源监视器"后打开 

找到网络 - 侦听端口:

在这里就能找到在监听指定端口的应用,如在这里node.exe监听3000和5173端口。
方法二:用PowerShell的Get-NetTCPConnection命令
使用快捷键Win + X,打开终端(管理员):

执行命令:
powershell
Get-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess
(此处的3000换成你实际需要的参数)
输出效果:

这一步事实上是两步命令合并:
- 获取端口连接信息,得到OwningProcess(PID)
Get-NetTCPConnection -LocalPort 3000(需要注意,如果你想执行这一步,需要先把窗口最大化,否则PowerShell会直接不显示OwningProcess这一列)(Windows有的时候就是会有这些弱智bug,这是feature)
输出效果:

- 根据PID查看进程
Get-Process -Id 25036
得到结果:

方法三:在终端中用netstat
第一步: 找监听3000端口的PID 可以在cmd或者powershell中执行:
bash
netstat -ano | findstr :3000
-ano:
-a:all,显示所有连接和监听端口-n:numeric(数字的),以数字形式显示地址和端口号-o:owners,显示拥有每个网络连接的进程id。
获得PID:

这里LISTENING的第一条和第三条的最后一列25036就是在监听3000端口的应用的PID。
中间ESTABLISHED是本机访问远程的3000端口。左边的马赛克是我的IP地址,右边的是对方的IP地址。
第二步: 找PID对应的进程 继续执行:
bash
tasklist | findstr 25036
就可以看到是哪个应用了:

本文撰写过程中参考的网络资料: