官方网站/ 微信公众平台/ 新浪微博/

每天浪费 5 分钟杀端口?我开发了一个工具终结这种痛苦

每天浪费 5 分钟杀端口?我开发了一个工具终结这种痛苦

背景

作为一个开发者,我每天都要遇到这样的场景:

$ npm run dev
Error: Port 3000 is already in use

然后我就得:

  1. Google 搜索 "如何在 Mac 上 kill 端口"
  2. 复制粘贴一堆 lsof -ti:3000 | xargs kill -9 命令
  3. 每次都记不住,只能反复搜索
  4. 一天重复 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 语言开发,核心特点:

  1. 平台特定实现

    • Linux: lsof/ss + kill
    • macOS: lsof + kill
    • Windows: netstat + tasklist + taskkill
  2. 性能优化

    • Windows 批量查询:从 31 次系统调用优化到 2 次(30x 性能提升)
    • 智能刷新:只在数据变化时更新 UI
  3. 条件编译

    • 使用 Go build tags 实现系统托盘功能
    • Linux ARM64 禁用 CGO,其他平台完整功能
  4. 用户体验

    • 彩色终端输出
    • 智能确认(仅数据库端口需要确认)
    • 详细错误提示

使用场景

场景 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

开源信息

后续计划

总结

killport 不是为了炫技,而是真正解决开发者的日常痛点。

如果你也厌倦了每天 Google "如何 kill 端口",试试 killport 吧。

一条命令,终结痛苦。


GitHub: https://github.com/TNT-Likely/killport

欢迎 Star ⭐ 和贡献代码!

posted @ 2025-10-27 10:13  香柠绿茶~  阅读(101)  评论(1)    收藏  举报