文章摘要
Port Kill是一款轻量级的macOS状态栏应用,用于监控和管理运行在2000-6000端口的开发进程。它提供实时进程检测,允许用户一键终止单个或所有进程。应用通过颜色编码图标显示进程数量,动态更新上下文菜单,并采用SIGTERM→SIGKILL策略安全终止进程,兼容macOS且无主窗口。
文章总结
Port Kill:轻量级 macOS 状态栏应用
Port Kill 是一款专为 macOS 设计的轻量级状态栏应用,主要用于监控和管理运行在端口 2000 至 6000 之间的开发进程。该应用提供实时进程检测功能,并允许用户一键终止单个进程或所有进程。
主要功能:
- 实时监控:每 5 秒使用
lsof命令扫描端口 2000-6000,确保及时捕捉进程变化。 - 状态栏图标:通过颜色编码显示当前进程数量(绿色=0,红色=1-9,橙色=10+),鼠标悬停时可查看具体进程数。
- 动态上下文菜单:每 3 秒更新一次,显示当前进程并提供终止选项。
- 一键终止进程:点击菜单项即可终止所有检测到的进程。
- 安全进程终止:采用 SIGTERM → SIGKILL 策略,先尝试优雅终止,若 500 毫秒内未响应则强制终止。
- 稳定架构:基于
winit事件循环构建,确保与 macOS 的兼容性。 - 优雅的错误处理:能够处理权限错误和进程失败的情况。
- 无主窗口设计:纯状态栏应用,不占用额外窗口空间。
菜单选项: - 终止所有进程:一键关闭所有检测到的开发进程。 - 单个进程条目:格式为“终止:端口 3001: node (PID 1234)”,点击可终止特定进程。 - 退出:关闭应用程序。
系统要求:
- macOS 10.15 或更高版本
- Rust 1.70 或更高版本
- lsof 命令(macOS 自带)
安装与使用:
1. 克隆仓库:git clone <repository-url>
2. 构建应用:cargo build --release
3. 运行应用:./run.sh 或手动执行 cargo run --release
4. 启动后,状态栏图标将显示进程数量,点击图标可打开上下文菜单,选择“终止所有进程”或特定进程进行终止。
技术细节: - 主线程:处理 UI 事件和菜单交互。 - 进程监控:每 5 秒扫描一次进程。 - 菜单更新:进程变化时每 3 秒更新一次菜单。 - 进程终止:在后台线程中运行,确保 UI 响应流畅。
依赖库:
- tray-icon:macOS 状态栏集成
- winit:事件循环管理
- nix:信号处理
- crossbeam-channel:线程通信
- tokio:异步运行时
- anyhow:错误处理
- serde:数据序列化
开发与调试:
- 构建开发版本:cargo build
- 带日志运行:RUST_LOG=info cargo run
常见问题: - 权限问题:确保应用有足够权限,某些系统进程可能受保护。 - 进程未检测到:确认进程在 2000-6000 端口范围内,且处于 TCP LISTEN 状态。 - 应用无法启动:检查是否有其他实例运行,或查看系统日志中的错误信息。
许可证: 本项目采用 FSL-1.1-MIT 许可证,详情请参阅 LICENSE 文件。
贡献: 欢迎开发者参与贡献,共同完善 Port Kill 的功能与性能。
评论总结
评论内容主要围绕一个开发工具展开,观点多样,既有肯定也有质疑。以下是总结:
肯定与兴趣
- 评论1认为这是一个有趣的想法,并提到它登上了首页:“Interesting idea... props for hitting the front page.”
- 评论6建议将其集成到SwiftBar/BitBar中:“These would be good additions to SwiftBar/BitBar.”
功能与替代方案
- 评论2提到Raycast扩展可以实现类似功能:“There's also a raycast extension for this kind of thing.”
- 评论5分享了一个macOS上的简单脚本:“On macOS i've this in my zshrc file... i use it like killport 8000.”
质疑与批评
- 评论3质疑工具的实用性和介绍不足:“What is 'development process'???... no introduction to why I should be interested in this tool.”
- 评论10批评工具依赖过多:“This has 10 additional deps. 10! Rust is the new Javascript.”
技术细节与偏好
- 评论8对端口范围提出疑问:“Ports 2000 - 6000?... when did we stop running things on 8xxx?”
- 评论9认为lsof命令过于占用资源:“lsof is a bit heavy, I wouldn't want that running every 5 seconds.”
其他观点
- 评论4表达了对AI生成工具的担忧:“I'm not looking forward to the near future where it will become harder to distinguish little projects like this from AI generated tools.”
- 评论12对颜色变化表示不解:“Green -> Red -> Orange. That is an odd progression.”
总结:评论中既有对工具的肯定和兴趣,也有对其实用性、技术细节和依赖问题的质疑,同时还有一些关于替代方案和未来趋势的讨论。