电脑港
白蓝主题五 · 清爽阅读
首页  > 软件应用

终端窗口查端口占用:几行命令搞定本地服务冲突

开发微信小程序本地调试时突然报错“端口 3000 已被占用”,浏览器打不开预览页;或者刚启动一个 Python Flask 服务,提示 Address already in use——别急着重启电脑,打开终端窗口,30 秒就能揪出是哪个进程在偷偷占着端口。

Windows 用户:用 netstat + tasklist

按下 Win + R,输入 cmd 回车,进命令行:

netstat -ano | findstr :8080

8080 换成你想查的端口号(比如 3000、8000、5000)。回车后会看到类似这样的一行:

TCP    127.0.0.1:8080    0.0.0.0:0    LISTENING    12345

最右边的 12345 就是 PID(进程 ID)。再执行:

tasklist | findstr 12345

就能看到具体是哪个程序,比如 node.exejava.exe 或者 chrome.exe —— 原来是上个没关干净的 React 开发服务器还在后台跑着。

macOS / Linux 用户:一行 lsof 解决

打开 Terminal,直接敲:

lsof -i :3000

如果提示 command not found,先装一下:brew install lsof(macOS)或 sudo apt install psmisc(Ubuntu/Debian)。成功后输出类似:

COMMAND   PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
node 9876 user 25u IPv6 0xabcdef1234567890 0t0 TCP *:3000 (LISTEN)

一眼就看出是 node 进程,PID 是 9876。想立刻干掉它?补一句:

kill -9 9876

小技巧:批量查、快速杀

嫌每次输两遍麻烦?macOS/Linux 可以合并成一条:

lsof -ti:5000 | xargs kill -9

Windows 也能偷懒,写个批处理(保存为 killport.bat):

@echo off
for /f "tokens=5" %%a in ('netstat -ano ^| findstr ":%1"') do taskkill /f /pid %%a

之后只要运行 killport.bat 8080,端口就清空了。

为啥总遇到端口冲突

常见场景其实就几个:VS Code 的 Live Server 默认开 5500;前端项目用 npm start 常占 3000;Docker 容器映射到本地 8080;甚至某个 Electron 应用崩溃后没释放端口……不是系统坏了,只是进程没退干净。下次再弹“端口已被占用”,别慌,终端窗口点开,查、杀、重试,三步到位。