Hacker News 中文摘要

RSS订阅

Show HN: Port Kill – 轻量级 macOS 状态栏开发端口监控工具 -- Show HN: Port Kill – A lightweight macOS status bar development port monitor

文章摘要

Port Kill是一款轻量级的macOS状态栏应用,用于监控和管理运行在2000-6000端口的开发进程。它提供实时进程检测,允许用户一键终止单个或所有进程。应用通过颜色编码图标显示进程数量,动态更新上下文菜单,并采用SIGTERM→SIGKILL策略安全终止进程,兼容macOS且无主窗口。

文章总结

Port Kill:轻量级 macOS 状态栏应用

Port Kill 是一款专为 macOS 设计的轻量级状态栏应用,主要用于监控和管理运行在端口 2000 至 6000 之间的开发进程。该应用提供实时进程检测功能,并允许用户一键终止单个进程或所有进程。

主要功能:

  1. 实时监控:每 5 秒使用 lsof 命令扫描端口 2000-6000,确保及时捕捉进程变化。
  2. 状态栏图标:通过颜色编码显示当前进程数量(绿色=0,红色=1-9,橙色=10+),鼠标悬停时可查看具体进程数。
  3. 动态上下文菜单:每 3 秒更新一次,显示当前进程并提供终止选项。
  4. 一键终止进程:点击菜单项即可终止所有检测到的进程。
  5. 安全进程终止:采用 SIGTERM → SIGKILL 策略,先尝试优雅终止,若 500 毫秒内未响应则强制终止。
  6. 稳定架构:基于 winit 事件循环构建,确保与 macOS 的兼容性。
  7. 优雅的错误处理:能够处理权限错误和进程失败的情况。
  8. 无主窗口设计:纯状态栏应用,不占用额外窗口空间。

菜单选项: - 终止所有进程:一键关闭所有检测到的开发进程。 - 单个进程条目:格式为“终止:端口 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. 肯定与兴趣

    • 评论1认为这是一个有趣的想法,并提到它登上了首页:“Interesting idea... props for hitting the front page.”
    • 评论6建议将其集成到SwiftBar/BitBar中:“These would be good additions to SwiftBar/BitBar.”
  2. 功能与替代方案

    • 评论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. 质疑与批评

    • 评论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.”
  4. 技术细节与偏好

    • 评论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.”
  5. 其他观点

    • 评论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.”

总结:评论中既有对工具的肯定和兴趣,也有对其实用性、技术细节和依赖问题的质疑,同时还有一些关于替代方案和未来趋势的讨论。