最常用且可靠的方式是用 lsof 查找占用端口的进程并用 kill -9 终止:先运行 lsof -p -n -i :端口号 定位 pid,再执行 kill -9 pid 强制释放端口;也可用 lsof -itcp -stcp:listen | grep :端口号 精准筛选监听进程,或用 netstat 辅助验证。
直接用 lsof 查进程,再用 kill -9 终止,是最常用也最可靠的方式。不需要装额外工具,系统自带就能搞定。
用 lsof 精准定位占用端口的进程
打开终端,输入以下命令(把 8080 换成你要查的实际端口号):
lsof -P -n -i :8080
加 -P -n 是为了跳过端口名解析和 DNS 查询,输出更干净、响应更快。如果端口被占,你会看到类似这样的结果:
- COMMAND:进程名(比如 node、python、java)
- PID:进程 ID,后面终止要用
- USER:运行该进程的用户
-
NAME:显示监听地址,如
*:8080或127.0.0.1:8080,状态为(LISTEN)
如果命令没任何输出,说明这个端口当前是空闲的。
只看真正监听的 TCP 进程
有时候 lsof -i :8080 会列出已建立但不监听的连接(比如客户端连接),干扰判断。要确保只查“正在监听”的服务进程,用这条命令:
lsof -iTCP -sTCP:LISTEN | grep :8080
它会过滤出所有处于 LISTEN 状态的 TCP 连接,结果里 PID 列的数字就是你要处理的目标。
用 netstat 辅助验证
如果你对 lsof 结果存疑,或者想扫一遍所有监听端口,可以用 netstat:
netstat -an | grep LISTEN
再配合 grep 筛选目标端口:
netstat -an | grep LISTEN | grep :8080
留意输出中 Local Address 是否出现 *:8080 或 127.0.0.1:8080,且状态为 LISTEN,就确认被占用了。
强制终止进程释放端口
拿到 PID 后,在终端执行:
kill -9 12345(把 12345 换成你查到的真实 PID)
这是强制终止信号,进程会立刻退出,端口随即释放。执行后建议再跑一次 lsof -P -n -i :8080 确认无输出,表示已清空。
注意:kill -9 不会保存数据或等待清理,适用于开发调试场景;如果是数据库或重要服务,请先尝试 kill(不带 -9)让其正常退出。











