Windows 查看端口被哪个进程占用:netstat / PowerShell / 资源监视器

cmd 方式(最常用)

打开命令提示符(管理员权限更好),查看指定端口:

netstat -ano | findstr :9000

输出示例:

TCP    0.0.0.0:9000    0.0.0.0:0    LISTENING    12345

末尾的 12345 是进程 PID,再查进程名:

tasklist | findstr 12345

输出:

php-cgi.exe     12345 Console  1    25,200 K

php-cgi.exe 就是占用 9000 端口的进程。

PowerShell 方式

直接查指定端口:

Get-NetTCPConnection -LocalPort 9000

输出包含 OwningProcess(PID),再查进程:

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

这一条命令可以直接得到进程名,不需要中间步骤。

资源监视器(图形界面)

运行 resmon,进入「网络」→「监听端口」选项卡,直接看各进程占用的端口列表,也可以在「CPU」→「关联的句柄」里搜索端口号。

释放端口(结束进程)

拿到 PID 后,cmd:

taskkill /F /PID 12345

PowerShell:

Stop-Process -Id 12345 -Force

/F-Force 表示强制终止,不等进程自行退出。

常见场景

现象原因
启动服务报 Address already in use端口被其他程序占用
多个服务共用同一端口需要改端口配置
php-cgi / node / java 没停干净上次启动的进程残留

找到 PID 之后,先确认进程名再决定是否结束——别误杀系统进程。