

“Error: Port 3000 is already in use.”
看到这句报错的时候,我刚想测试一个改动。本来只是想快速验证一下,结果现在要先去查是谁占了这个端口,然后再想办法结束它。
在终端里敲 lsof -i :3000,找到 PID,再 kill -9。这套流程我重复了太多次。
后来找方案时,碰到了 PortKiller 这个项目。
不只是杀端口
PortKiller 是一个跨平台的端口管理工具,支持 macOS 和 Windows。它把自己藏在菜单栏(或系统托盘)里,需要的时候点一下,所有占用端口的进程一目了然。
用它杀端口真的很省事。看到占用的进程,直接点 Kill 就行,支持优雅退出和强制终止两种方式。不用记命令,不用查 PID。
它还做了智能分类,自动把端口分成 Web Server、Database、Development、System 几类。找起来更快,不会一堆进程混在一起。
如果你有一些常用的端口,可以收藏起来。关键端口也能设置监控,状态有变化会通知你。
对用 Kubernetes 的同学来说,它内置了 kubectl port-forward 的管理,断线能自动重连。用 Cloudflare Tunnel 的话,也可以直接在里面查看连接状态。
端口状态是实时刷新的,不用手动点刷新。
怎么安装
macOS 用户直接用 Homebrew:
1
brew install --cask productdevbook/tap/portkiller
Windows 用户去 GitHub Releases 下载 zip 解压就行。
装完以后它常驻在菜单栏或系统托盘,不占地方,需要的时候点一下。
我推荐谁用
- 前端开发,3000、8080 端口经常被之前的进程占用
- 同时跑多个服务,记不清楚哪个端口对应哪个进程
- 本地开发用 Kubernetes,经常要起 port-forward
- 用 Cloudflare Tunnel 做内网穿透
这类工具我看过不少,但真正让我想分享的不多。PortKiller 的切入点很实在,就是把一件烦人的小事做得够直接。
GitHub: https://github.com/productdevbook/port-killer
如果你也被端口占用困扰过,可以收藏备用。下次报错 EADDRINUSE,不用再去终端里敲命令了。
