Hacker News 中文摘要

RSS订阅

显示HN:Sonar——一个微型命令行工具,用于查看并终止本地主机上运行的程序 -- Show HN: Sonar – A tiny CLI to see and kill whatever's running on localhost

文章摘要

Sonar是一个命令行工具,用于检查和管理本地主机端口上运行的服务,帮助开发者监控和控制系统中的网络服务状态。

文章总结

GitHub项目:raskrebs/sonar - 本地端口服务管理CLI工具

项目概述

Sonar是一个命令行工具,用于检测和管理本地主机上监听端口的服务。它解决了开发者在端口被占用时需要反复使用lsof等命令的痛点,能够快速显示所有本地监听服务,并支持Docker容器管理、资源监控等高级功能。

核心功能

  1. 端口列表展示

    • 显示所有监听端口,包含进程、容器、资源使用率和可点击的URL
    • 支持筛选(如仅Docker)、排序、JSON输出和远程主机扫描
    • 示例命令:sonar list --stats(包含CPU/内存统计)
  2. 端口详情检查

    • 显示完整进程信息:命令、用户、资源占用、健康检查结果等
    • 示例:sonar info 3000
  3. 进程管理

    • 终止进程(支持SIGTERM/SIGKILL)
    • 批量停止Docker容器或Compose项目
    • 示例:sonar kill-all --project my-app
  4. 日志与交互

    • 实时日志查看(自动适配Docker或本地进程)
    • 进入容器Shell或建立TCP连接
    • 示例:sonar attach 3000 --shell bash
  5. 高级特性

    • 实时监控端口变化(支持桌面通知)
    • 服务依赖关系图谱分析
    • 端口映射和配置文件管理

安装方式

bash curl -sfL https://raw.githubusercontent.com/raskrebs/sonar/main/install.sh | bash - 默认安装到~/.local/bin - 支持自定义路径和Shell补全

技术细节

  • 支持平台:macOS(基于lsof)和Linux(基于ss
  • 开发语言:Go(96.5%)+ Shell(3.5%)
  • 开源协议:MIT License

项目背景

开发者因厌倦手动排查端口冲突问题而创建该工具,尤其优化了Docker开发场景下的体验,可自动识别容器名称、Compose项目等信息。

(注:已过滤GitHub页面导航菜单、用户交互元素等非核心内容,保留技术细节和使用场景说明)

评论总结

以下是评论内容的总结:

主要观点

  1. 工具认可与需求

    • 多位用户表示经常遇到端口冲突问题,现有解决方案(如lsof)不够方便
    • "love this, i get tired of spamming lsof -i tcp:xxxx" (Bradd3rs)
    • "Nice! I always forget the lsof flags and end up googling them every time." (maciejj)
  2. 功能建议

    • 希望增加自定义Docker容器URL的功能
      • "Would be nice to have a flag to customize the URL displayed for Docker containers." (klaushardt)
    • 建议增加系统托盘显示或内联终止功能
      • "Would be cool if it could run in the system tray..." (maciejj)
      • "It should be possible to kill inline." (mustafa0x)
  3. 命名争议

    • 部分用户认为名称"Sonar"容易与SonarQube混淆
      • "Sonar as in SonarQube? That's an interesting choice for a name :)" (moezd)
      • "...might be worth considering a rename to avoid the confusion." (maciejj)
  4. 替代方案

    • 一些用户分享了自己的脚本或工具
      • "i have this in my .zshrc which provides same functionality..." (chwzr)
      • "Mine is called 'porthole'..." (clutchski)
  5. 技术讨论

    • 有用户批评行业过度依赖本地端口绑定,建议使用Unix域套接字
      • "Christ Almighty I hate our industry practice of binding to some inscrutable port number..." (quotemstr)
  6. 开发相关

    • 用户对Go语言和工具实现表示兴趣
      • "Your app inspires me to take a look at Go, again!" (mrbonner)
    • 有人用Rust实现了类似工具
      • "I decided to one-shot one app...and Codex indeed one shotted it, wow." (fcoury)

其他提及

  • 建议加入Homebrew仓库 (jkestner)
  • 对工具的单二进制、无依赖特性表示赞赏 (raskrebs)
  • 部分用户对第三方工具持谨慎态度 (mfkrause)

总结:该工具解决了开发者常见的端口管理痛点,获得普遍认可,同时用户提出了功能增强、命名优化等建议,并分享了替代方案和技术观点。