Microsoft 发布了其著名的 Sysinternals Process Explorer 的原生 macOS 实现,为标准活动监视器提供了一个高粒度的替代方案。该工具使用 Swift 和 SwiftUI 构建,将熟悉的 Windows 风格工作流带到 Mac 上,允许用户以超出标准系统工具的细节水平来检查实时进程树、模块、句柄和线程。

Sysinternals Process Explorer for Mac 界面的详细视图,显示各种进程详情。
应用程序界面包括特定的颜色编码和用于检查句柄和线程的详细面板。github.com

此视觉效果支持对应用程序特定 UI 功能的描述,例如实时进程树和用于检查模块的下层面板。

核心功能与 UI

该应用程序通过提供实时进程树和带有水平滚动指标列的冻结进程名称面板,复制了核心的 Process Explorer 体验。它支持截断单元格的即时工具提示,并提供暂停/恢复刷新功能,以便对进程列表进行静态分析。

Sysinternals Process Explorer for Mac 应用程序的屏幕截图,显示实时进程树和系统信息。
Sysinternals Process Explorer for Mac 提供系统进程和资源使用的高粒度视图。github.com

这张图片展示了新的 macOS 应用程序的主要界面,显示了核心功能部分描述的进程树和系统指标。

仓库参与度: Star 131; Watcher 2; Fork 8
仓库参与度github.com

HN Digest 根据 github.com 报告的数据绘制的图表;数值按来源所示显示。

用户可以通过进程和下层面板列表中的“输入以选择”功能与数据进行交互。界面包括一个专门的系统信息窗口,显示 CPU、内存、交换分区、磁盘 I/O、网络 I/O 和 GPU 使用情况的摘要数据和图表。

“Sysinternals Process Explorer for Mac 是核心 Process Explorer 体验的原生 macOS 实现。”

— GitHub - microsoft/Procexp-Mac: Process Explorer for MacOS

技术架构与数据源

该应用程序构建在 Swift、SwiftUI 和 AppKit 的现代技术栈之上。它通过公共 macOS API 收集系统数据,包括 libproc、sysctl、Mach 主机统计信息、Security.framework、IOKit 和 Metal。

为了处理需要提权的操作,例如查看所有用户的完整进程列表或执行特权进程控制,该应用程序利用了一个可选的特权辅助程序。此辅助程序是一个通过 XPC 访问的 launchd 守护进程,用户可以通过系统设置进行批准。

高级可观测性与安全

除了基础的进程列表,该工具还提供一个 TCP/IP 选项卡,显示本地和远程地址、TCP 状态,并执行异步反向 DNS 查询。它还提供安全/签名选项卡,显示签名者、证书链、Team ID 和公证状态。

对于模块和镜像检查,该应用程序提供元数据、签名验证以及“在 Finder 中显示”或“在线搜索”的直接链接。它还包括 VirusTotal 集成,用于检查特定镜像和进程的信誉。

局限性与权衡

由于 macOS 并不通过公共 API 暴露所有数据源,当访问被拒绝时,该应用程序会留白某些值,而不是伪造数据。某些指标仅在同用户进程或特权辅助程序处于活动状态时可用。

该工具旨在提供深度可观测性,这可能导致其 UI 与标准系统工具相比,在 macOS 用户眼中感觉不够“原生”。然而,它提供了显著更多的数据点,例如文件句柄和与系统调用相关的信息,这些信息在默认的活动监视器中通常是缺失的。

Hacker News 读者的反应

  • 技术补充: 一位测试该软件的评论者报告称,该应用程序似乎处于早期 Alpha 状态,并指出在安装所需的特权辅助程序后,界面变为空白。 评论 ↗
  • 技术补充: 一位遇到工具功能问题的用户指出,按 CPU 排序和在视图模式之间切换似乎无法正常工作。 评论 ↗
  • 技术补充: 一位评论者建议该工具可以作为标准活动监视器的有用替代品,因为他们发现标准工具功能不足且加载缓慢。 评论 ↗
  • 技术补充: 另一位用户分享了他们为 Linux 开发类似工具的经验,强调了他们如何处理进程检测和权限限制。 评论 ↗

以上为 Hacker News 讨论中观点的摘要,并非经过核实的事实。 阅读完整讨论 ↗