每天浪费 5 分钟杀端口?我开发了一个工具终结这种痛苦
每天浪费 5 分钟杀端口?我开发了一个工具终结这种痛苦
背景
作为一个开发者,我每天都要遇到这样的场景:
$ npm run dev
Error: Port 3000 is already in use
然后我就得:
- Google 搜索 "如何在 Mac 上 kill 端口"
- 复制粘贴一堆
lsof -ti:3000 | xargs kill -9命令 - 每次都记不住,只能反复搜索
- 一天重复 5 次以上
我相信这不只是我一个人的痛苦。于是我花了一些时间,开发了 killport —— 一个真正能解决这个问题的工具。
killport 是什么?
killport 是一个跨平台的端口管理工具,让杀进程变得像呼吸一样简单。
以前:
lsof -ti:3000
kill -9 12345
现在:
killport 3000
就这么简单。
核心特性
1. 跨平台支持
- ✅ Linux
- ✅ macOS
- ✅ Windows
一套命令,走遍天下。不用再记忆不同系统的命令。
2. 交互式模式
无参数运行 killport,进入可视化界面:
- 方向键选择进程
- 空格标记
- 按
x批量 kill - 搜索功能 (
/) 快速定位 - 显示进程详细信息
3. 系统托盘常驻
killport tray
托盘会实时显示端口数量,点击即可快速操作:
- 查看所有占用端口
- 右键 Kill 或 Protect
- 搜索特定进程
- 一键清理开发端口
4. 保护模式
防止误杀数据库等重要服务:
killport protect 5432 # 保护 PostgreSQL
killport protect 3306 # 保护 MySQL
killport 5432
# 🛡️ Port 5432 is protected and cannot be killed
5. 智能预设
# 一键清理常用开发端口
killport --dev
# 使用预设组
killport preset frontend # 清理 3000, 5173, 4200, 8080
killport preset backend # 清理 8080, 8000, 9000, 3001
配置文件 ~/.killport.yaml 支持自定义预设:
presets:
myproject:
- 3000 # 前端
- 8080 # API 网关
- 8001 # 用户服务
- 6379 # Redis
protected_ports:
- 5432 # PostgreSQL
- 3306 # MySQL
6. Watch 模式
实时监控端口状态:
killport watch 3000
# 输出:
# [19:30:15] 🟢 Port 3000 occupied
# PID: 12345, Process: node
# Command: npm run dev
#
# [19:32:20] ⚪ Port 3000 freed
技术实现
killport 使用 Go 语言开发,核心特点:
-
平台特定实现
- Linux:
lsof/ss+kill - macOS:
lsof+kill - Windows:
netstat+tasklist+taskkill
- Linux:
-
性能优化
- Windows 批量查询:从 31 次系统调用优化到 2 次(30x 性能提升)
- 智能刷新:只在数据变化时更新 UI
-
条件编译
- 使用 Go build tags 实现系统托盘功能
- Linux ARM64 禁用 CGO,其他平台完整功能
-
用户体验
- 彩色终端输出
- 智能确认(仅数据库端口需要确认)
- 详细错误提示
使用场景
场景 1: 每天开发前清理端口
# 早上开始工作
killport --dev
场景 2: 快速选择性 kill
killport # 交互式模式
# 方向键选择 → 空格标记 → 按 x 执行
场景 3: 脚本中使用
#!/bin/bash
killport --dev --yes # 跳过确认
npm run dev
场景 4: 后台常驻管理
killport tray # 系统托盘常驻
场景 5: 调试端口占用
killport watch 3000 # 实时监控
安装
从 Release 下载(推荐)
访问 Releases 下载对应平台的二进制文件。
支持平台:
- Linux x86_64 / ARM64
- macOS Intel / Apple Silicon
- Windows x86_64
使用 Go 安装
go install github.com/TNT-Likely/killport@latest
从源码构建
git clone https://github.com/TNT-Likely/killport.git
cd killport
make build
对比其他方案
| 工具 | 命令 | 跨平台 | 易记性 | 依赖 |
|---|---|---|---|---|
| killport | killport 3000 |
✅ | ✅ | 无 |
| lsof + kill | lsof -ti:3000 | xargs kill -9 |
❌ (仅 Unix) | ❌ | lsof |
| netstat + taskkill | netstat -ano | findstr :3000 |
❌ (仅 Windows) | ❌ | netstat |
| npx kill-port | npx kill-port 3000 |
✅ | ⚠️ | Node.js |
| fuser | fuser -k 3000/tcp |
❌ (仅 Linux) | ❌ | fuser |
开源信息
- 仓库:https://github.com/TNT-Likely/killport
- 协议:MIT
- 语言:Go 1.25+
- Star 支持:如果这个工具为你节省了时间,请给个 ⭐
后续计划
总结
killport 不是为了炫技,而是真正解决开发者的日常痛点。
如果你也厌倦了每天 Google "如何 kill 端口",试试 killport 吧。
一条命令,终结痛苦。
GitHub: https://github.com/TNT-Likely/killport
欢迎 Star ⭐ 和贡献代码!
浙公网安备 33010602011771号