更新日志/Vitals 1.9

Vitals 1.9:进程检查器,适用于你Mac上的任何进程

Atta 🐬

Vitals创始人

发布于

简要回答

Vitals 1.9让Vitals既是活动监视工具,也是进程检查器。点按你Mac上的任意进程,它的面板就会显示它所属的App、代码签名和授权、父进程和Launch Agent、完整的命令行,以及它自启动以来用掉的CPU时间、内存、打开的文件和监听端口。App还有一张“详细信息”卡片,显示版本、软件包ID和Info.plist。所有这些都能存储为CSV,同样的详细信息也能在“终端”里用vitals process或通过MCP获取。

点按任意进程来检查它

活动监视器只给进程一个名称和一个编号。在Vitals中点按任意进程,表格旁就会打开一个面板,逐个部分列出macOS能告诉你的关于它的一切。

  1. 01 点按表格中的进程,或点按一个App,再点按它面板中的任意进程。
  2. 02 指针移到App面板中的进程上时,它的关闭标记旁会出现ⓘ。点按它会打开同样的详细信息。
  3. 03 点按面板中的父进程或子进程,可以跟过去。
“内存”标签页中打开了com.docker.backend的面板:它的父进程、启动它的App、版本、命令行和代码签名 “内存”标签页中打开了com.docker.backend的面板:它的父进程、启动它的App、版本、命令行和代码签名

完整介绍见进程检查器页面。

检查任意进程的代码签名和授权

一个叫Helper的进程什么也说明不了,所以先看是谁构建了它。“安全性”部分会给出开发者的名称和团队ID,说明进程是否使用强化运行时、是否在沙盒中运行,并列出它拥有的每项授权及其值。

带团队ID的名称,是Apple认可的开发者。“已签名,无证书”对Homebrew和你自己编译的东西来说很正常。“未签名”表示完全没有签名。

com.docker.backend的“安全性”部分:由Docker Inc签名并带团队ID,强化运行时已开启,没有沙盒,以及它的七项授权 com.docker.backend的“安全性”部分:由Docker Inc签名并带团队ID,强化运行时已开启,没有沙盒,以及它的七项授权

父进程、Launch Agent和命令行:它为什么在运行

“身份”列出父进程和启动它的App。如果是后台进程,“启动”会列出它背后的Launch Agent或Launch Daemon,所以这个postgres原来是Homebrew服务sh.brew.postgresql@17。可执行文件的路径和完整的命令行就在下面,环境折叠在面板的最后。

postgres的面板:父进程是launchd,“启动”下是Launch Agent sh.brew.postgresql@17,还有可执行文件和参数,已签名但没有证书 postgres的面板:父进程是launchd,“启动”下是Launch Agent sh.brew.postgresql@17,还有可执行文件和参数,已签名但没有证书

CPU时间、内存峰值、打开的文件和端口:它用掉了什么

百分比只反映这一秒。面板则涵盖进程的整个生命周期:分为用户和系统的CPU时间、当前内存与它占用过的最高值的对比、线程、打开的文件、页面输入、读取和写入的字节。下面是它监听的端口和它启动的子进程,点一下就能打开。面板打开时,CPU和内存的图表会持续更新。

com.docker.backend的“资源使用情况”:分为用户和系统的CPU时间、峰值5%的内存、线程、打开的文件、磁盘总量、三个监听端口和一个子进程 com.docker.backend的“资源使用情况”:分为用户和系统的CPU时间、峰值5%的内存、线程、打开的文件、磁盘总量、三个监听端口和一个子进程

每个App都有“详细信息”卡片,下面是它的进程

打开一个App,它的“详细信息”卡片会显示版本、软件包ID、架构、代码签名、保护、由什么启动和安装位置,点一下就能看到完整的Info.plist。

它的进程列在下面,每个都能打开自己的面板。几秒前启动的进程带有“新”标记,“最近结束”保留最近十分钟内结束的进程,所以你离开时崩溃的帮助程序或完成的构建仍然看得到。

Docker的面板:显示版本、软件包ID和签名的“详细信息”卡片,有两个进程的“最近结束”,以及七个进程,其中一个标记为“新” Docker的面板:显示版本、软件包ID和签名的“详细信息”卡片,有两个进程的“最近结束”,以及七个进程,其中一个标记为“新”

存储为CSV,或在“终端”里询问

面板标题中的共享按钮提供存储为 CSV和拷贝为文本,其中包括Info.plist、授权、环境和进程。vitals process按名称或PID给出同样的详细信息。vitals top现在也能回看:给它一个时间,它就会告诉你当时哪些App用得最多。

$ vitals process node
$ vitals process 60412 --json
$ vitals process node --env --plist
$ vitals top --at 14:02
$ vitals top --from 14:00 --to 15:30

Vitals按小时保留两天内的App数据,之后按天保留,回答会说明它涵盖哪段时间。

向你的AI助手询问任何进程

Claude、Codex和Cursor可以通过process_details工具向Vitals询问任何进程,也能看到你历史记录中每个峰值背后的App。环境绝不会传给它们,因为其中可能有密钥。

  • 这个叫node的进程是什么?它属于哪个App?
  • 占用端口3000的进程有签名吗?是什么启动了它?
  • 14:02的CPU峰值是哪些App造成的?

新增五列,过滤也支持正则表达式

工具栏中新增的列菜单可以把PID、用户、启动时间、版本和路径加到App表格。过滤现在也接受两个斜杠之间的正则表达式,比如/helper|agent/。

常见问题

1.9是免费更新吗?

是的。在Vitals中选取“检查更新”。其中的全部内容都包含在每种许可证中。

为什么有些进程显示的详细信息较少?

macOS只向进程所属的用户显示它的命令行、环境和累计总量。对于属于macOS或其他账户的进程,你仍能看到身份和代码签名,CPU和内存则通过Vitals的可选帮助程序获取:在“设置”→“通用”中打开完整系统指标。

它能告诉我某个进程是否安全吗?

它给你判断所需的事实:代码签名、父进程、它在哪里、它在做什么。Vitals不会扫描恶意软件。

它能对进程取样或生成Spindump吗?

不能。要看挂起App的堆栈跟踪,打开活动监视器并按“取样”。

1.9的全部内容

Vitals 1.9是免费更新。在Vitals中选取“检查更新”,或从vitalsmac.com下载。

购买Vitals $15 第一次用Vitals? 首发期间$15即可终身使用,首发期后$39,一次付款,14天内可退款。或一年更新$9。
  • 新增 进程检查器。 活动监视器只给进程一个名称和一个编号。在 Vitals 中点按任意进程,其余的都由它的面板告诉你:它所属的 App、代码签名和团队 ID、强化运行时、沙盒和授权、父进程和 Launch Agent、完整的命令行和环境、打开的文件、监听端口和子进程。点按父进程或子进程,可以跟过去。
  • 新增 进程的整个生命周期,不只是这一秒。 自启动以来的 CPU 时间,分为用户和系统;当前内存与峰值的对比;线程、页面输入、读取和写入的字节;面板打开时还有 CPU 和内存的实时图表。
  • 新增 每个 App 都有一张“详细信息”卡片。 App 的面板现在会显示版本、软件包 ID、架构、代码签名、保护、由什么启动、已运行时长和安装位置,点一下就能看到完整的 Info.plist。
  • 新增 刚启动的,和刚结束的。 在 App 的面板中,点按任意进程可打开它的详细信息。几秒前启动的进程带有“新”标记,“最近结束”保留最近十分钟内结束的进程以及它们运行了多久,所以崩溃的帮助程序仍然看得到。
  • 新增 拷贝它,或存储为 CSV。 任何面板都能拷贝为文本用于错误报告,或存储为 CSV 文件放到“下载”文件夹,其中包括 Info.plist、授权、环境和进程。
  • 新增 在“终端”中和 AI 助手那里也一样。 vitals process 按名称或 PID 给出同样的详细信息,可输出文本,也可用 --json。--env 加上环境,--plist 加上 Info.plist。Claude、Codex 和 Cursor 通过 process_details 工具获取这些信息,但不包括环境,因为其中可能有密钥。
  • 新增 峰值背后的 App。 vitals top --at 14:02 或 --from 14:00 --to 15:30 会告诉你那段时间哪些 App 用得最多,读取你历史记录的助手也能在每个峰值旁看到这些 App。
  • 改进 新增五列。 PID、用户、启动时间、版本和路径可以加入 App 表格,在工具栏新增的“列”菜单中选择。
  • 改进 过滤支持正则表达式。 在两个斜杠之间输入模式,比如 /helper|agent/。

更多