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 之后,先确认进程名再决定是否结束——别误杀系统进程。
