Mac进程检查器,就内置在你的活动监视工具里。

点按任意进程,它的面板就会显示:它所属的App、代码签名和团队ID、它的授权、父进程和Launch Agent、完整的命令行,以及它自启动以来用掉的CPU时间、内存、打开的文件和监听端口。App还会加上版本、软件包ID和Info.plist。可以存储为CSV,或在“终端”中用vitals process获取同样的内容。

点按左侧的进程,右侧就会打开它的面板。
Google Chrome
96个进程
内存
21.19 GB
CPU
14.2%
功率
4.1 W
GPU
3%
磁盘
0 kB/s
网络
1.2 MB/s
详细信息
版本
156.0.8078.74
软件包ID
com.google.Chrome
架构
通用 · x86_64 · arm64
签名
Google LLC · 团队ID EQHXZ8M8AV
保护
强化运行时未沙盒化
用户
me
已运行
6h 14m
位置
/Applications/Google Chrome.app
Info.plist44
进程
显示全部96条
最近结束2
标签页进程48402运行了 1h 12m · 3分钟前结束 318 MB
Google Chrome Helper (Plugin)48395运行了 26m 4s · 8分钟前结束 71 MB
终端
49个进程
内存
3.81 GB
CPU
13.2%
功率
1.8 W
GPU
0%
磁盘
2.1 MB/s
网络
0 kB/s
详细信息
版本
2.15
软件包ID
com.apple.Terminal
架构
Apple 芯片 · arm64e
签名
Apple
保护
无强化运行时未沙盒化
用户
me
已运行
2d 6h
位置
/System/Applications/Utilities/Terminal.app
Info.plist39
进程
最近结束2
node60498运行了 2m 8s · 5分钟前结束 612 MB
git60502运行了 0.4s · 4分钟前结束 9 MB
Docker
9个进程
内存
1.74 GB
CPU
2.4%
功率
0.9 W
GPU
0%
磁盘
340 kB/s
网络
0 kB/s
详细信息
版本
4.88.1
软件包ID
com.docker.docker
架构
Apple 芯片 · arm64
签名
Docker Inc · 团队ID 9BNSXJN65R
保护
强化运行时未沙盒化
用户
me
已运行
3d 1h
位置
/Applications/Docker.app
Info.plist31
进程
最近结束2
com.docker.build20335运行了 41s · 2分钟前结束 58 MB
com.docker.build20329运行了 1m 3s · 9分钟前结束 61 MB
Google Chrome
Google Chrome · PID 48190
内存
412 MB
CPU
1.1%
磁盘
0 kB/s
身份
进程ID
48190
父进程
launchd (1)
已运行
6h 14m
App
软件包ID
com.google.Chrome
版本
156.0.8078.74
架构
通用 · x86_64 · arm64
安全性
签名
Google LLC · 团队ID EQHXZ8M8AV
强化运行时
是
沙盒
否
授权
1
资源使用情况
CPU时间
42m 10s 用户 32m 54s · 78%系统 9m 16s · 22%
内存
412 MB · 峰值 672 MB 的 61%
线程
64
打开的文件
318
子进程
标签页进程482111.92 GB
Google Chrome Helper (GPU)48193842 MB
环境31
Google Chrome Helper (Renderer)
标签页进程
内存
1.92 GB
CPU
4.2%
磁盘
12 kB/s
身份
进程ID
48211
父进程
Google Chrome (48190)
启动者
Google Chrome (48190)
已运行
6h 12m
App
版本
156.0.8078.74
架构
通用 · x86_64 · arm64
参数
--type=renderer --lang=en-US --num-raster-threads=4 --enable-zero-copy
安全性
签名
Google LLC · 团队ID EQHXZ8M8AV
强化运行时
是
沙盒
否
授权
1
资源使用情况
CPU时间
12m 40s 用户 10m 23s · 82%系统 2m 17s · 18%
内存
1.92 GB · 峰值 2.18 GB 的 88%
线程
23
打开的文件
96
环境31
Google Chrome Helper (GPU)
Google Chrome · PID 48193
内存
842 MB
CPU
2.8%
磁盘
0 kB/s
身份
进程ID
48193
父进程
Google Chrome (48190)
启动者
Google Chrome (48190)
已运行
6h 14m
App
版本
156.0.8078.74
架构
通用 · x86_64 · arm64
参数
--type=gpu-process --lang=en-US --gpu-preferences=UAAAAAAAAADgAAAEAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAA
安全性
签名
Google LLC · 团队ID EQHXZ8M8AV
强化运行时
是
沙盒
否
授权
1
资源使用情况
CPU时间
18m 2s 用户 12m 37s · 70%系统 5m 25s · 30%
GPU
3%
内存
842 MB · 峰值 904 MB 的 93%
线程
31
打开的文件
142
环境31
Google Chrome Helper (Renderer)
标签页进程
内存
1.31 GB
CPU
0.3%
磁盘
0 kB/s
身份
进程ID
48377
父进程
Google Chrome (48190)
启动者
Google Chrome (48190)
已运行
3h 40m
App
版本
156.0.8078.74
架构
通用 · x86_64 · arm64
参数
--type=renderer --lang=en-US --num-raster-threads=4 --enable-zero-copy
安全性
签名
Google LLC · 团队ID EQHXZ8M8AV
强化运行时
是
沙盒
否
授权
1
资源使用情况
CPU时间
4m 51s 用户 4m 2s · 83%系统 49s · 17%
内存
1.31 GB · 峰值 1.36 GB 的 96%
线程
21
打开的文件
88
环境31
终端
终端 · PID 581
内存
148 MB
CPU
0.2%
磁盘
0 kB/s
身份
进程ID
581
父进程
launchd (1)
已运行
2d 6h
App
软件包ID
com.apple.Terminal
版本
2.15
架构
Apple 芯片 · arm64e
安全性
签名
Apple
强化运行时
否
沙盒
否
授权
6
资源使用情况
CPU时间
3m 12s 用户 2m 2s · 64%系统 1m 10s · 36%
内存
148 MB · 峰值 208 MB 的 71%
线程
12
打开的文件
58
子进程
zsh6012012 MB
zsh6060111 MB
环境24
zsh
终端 · PID 60120
内存
12 MB
CPU
0.0%
磁盘
0 kB/s
身份
进程ID
60120
父进程
login (60118)
启动者
终端 (581)
已运行
2d 5h
可执行文件
架构
Apple 芯片 · arm64e
参数
-zsh
安全性
签名
Apple
强化运行时
否
沙盒
否
资源使用情况
CPU时间
1.2s 用户 0.7s · 58%系统 0.5s · 42%
内存
12 MB · 峰值 20 MB 的 60%
线程
1
打开的文件
8
子进程
node60412486 MB
node60533391 MB
环境42
node
终端 · PID 60412
内存
486 MB
CPU
0.6%
磁盘
0 kB/s
身份
进程ID
60412
父进程
zsh (60120)
启动者
终端 (581)
已运行
2d 4h
可执行文件
架构
Apple 芯片 · arm64
参数
node_modules/.bin/next dev --port 3000
安全性
签名
Node.js Foundation · 团队ID HX7739G8FX
强化运行时
是
沙盒
否
资源使用情况
CPU时间
1h 52m 用户 1h 42m · 91%系统 10m 5s · 9%
内存
486 MB · 峰值 797 MB 的 61%
线程
19
打开的文件
203
网络
监听端口
3000
子进程
next-router-worker60418212 MB
next-render-worker60421180 MB
环境48
node
终端 · PID 60533
内存
391 MB
CPU
12.4%
磁盘
2.1 MB/s
身份
进程ID
60533
父进程
zsh (60120)
启动者
终端 (581)
已运行
14s
可执行文件
架构
Apple 芯片 · arm64
参数
node_modules/.bin/vitest run --coverage
安全性
签名
Node.js Foundation · 团队ID HX7739G8FX
强化运行时
是
沙盒
否
资源使用情况
CPU时间
9.1s 用户 8.0s · 88%系统 1.1s · 12%
内存
391 MB · 峰值 391 MB 的 100%
线程
27
打开的文件
412
子进程
node6054096 MB
node6054194 MB
环境48
Docker
Docker · PID 20288
内存
112 MB
CPU
0.1%
磁盘
0 kB/s
身份
进程ID
20288
父进程
launchd (1)
已运行
3d 1h
App
软件包ID
com.docker.docker
版本
4.88.1
架构
Apple 芯片 · arm64
安全性
签名
Docker Inc · 团队ID 9BNSXJN65R
强化运行时
是
沙盒
否
授权
7
资源使用情况
CPU时间
6m 4s 用户 4m 31s · 74%系统 1m 33s · 26%
内存
112 MB · 峰值 233 MB 的 48%
线程
22
打开的文件
74
子进程
com.docker.backend203111.57 GB
com.docker.build2034064 MB
环境29
com.docker.backend
Docker · PID 20311
内存
1.57 GB
CPU
2.1%
磁盘
340 kB/s
身份
进程ID
20311
父进程
Docker (20288)
启动者
Docker (20288)
已运行
3d 1h
App
版本
4.88.1
架构
Apple 芯片 · arm64
参数
-watchdog -max-restarts 5
安全性
签名
Docker Inc · 团队ID 9BNSXJN65R
强化运行时
是
沙盒
否
授权
7
资源使用情况
CPU时间
3h 8m 用户 2h 0m · 64%系统 1h 8m · 36%
内存
1.57 GB · 峰值 2.04 GB 的 77%
线程
48
打开的文件
241
子进程
com.docker.build2034064 MB
环境29
com.docker.build
Docker · PID 20340
内存
64 MB
CPU
0.2%
磁盘
0 kB/s
身份
进程ID
20340
父进程
com.docker.backend (20311)
启动者
Docker (20288)
已运行
12s
App
版本
4.88.1
架构
Apple 芯片 · arm64
安全性
签名
Docker Inc · 团队ID 9BNSXJN65R
强化运行时
是
沙盒
否
授权
1
资源使用情况
CPU时间
2.0s 用户 1.6s · 80%系统 0.4s · 20%
内存
64 MB · 峰值 64 MB 的 100%
线程
9
打开的文件
31
子进程
buildkitd2034641 MB
环境29
com.docker.virtualization
Docker · PID 20318
内存
38 MB
CPU
0.4%
磁盘
0 kB/s
身份
进程ID
20318
父进程
com.docker.backend (20311)
启动者
Docker (20288)
已运行
3d 1h
App
版本
4.88.1
架构
Apple 芯片 · arm64
安全性
签名
Docker Inc · 团队ID 9BNSXJN65R
强化运行时
是
沙盒
否
授权
3
资源使用情况
CPU时间
1h 4m 用户 31m 12s · 49%系统 32m 48s · 51%
内存
38 MB · 峰值 52 MB 的 73%
线程
14
打开的文件
46
环境29

这些数字是模拟的:网页读取不了你的Mac,也不应该读取。

01身份

进程背后的App、它的代码签名和授权。

面板先显示进程所属的App和它是哪种进程:浏览器标签页、扩展程序、GPU进程、开发服务器。然后是它的代码签名,包括开发者名称和团队ID、它是否使用强化运行时和沙盒、它拥有的每项授权,以及它是为Apple 芯片、Intel还是两者构建的、是否正通过Rosetta运行。

  • 它所属的App,以及它是标签页、扩展程序还是帮助程序
  • 代码签名,带团队ID;Apple自己的显示Apple
  • 强化运行时、沙盒,以及每一项授权
  • 为Apple 芯片、Intel或两者构建,以及是否由Rosetta运行
Google Chrome Helper (Renderer)
标签页进程
安全性
签名Google LLC · 团队ID EQHXZ8M8AV 强化运行时好 沙盒否 授权1
App
版本156.0.8078.74 架构通用 · x86_64 · arm64
代码签名和团队ID 为两者构建,不经过Rosetta
02启动

父进程、Launch Agent和完整的命令行。

每个进程都有父进程,Vitals会指出它,以及启动它的App;对于后台进程,还会指出在登录时通过launchd启动它的Launch Agent或Launch Daemon。完整的命令行能让一个光秃秃的node或python现出原形:原来是你熟悉的某个项目的开发服务器。下方是它启动的子进程,点一下就能看到。

  • 父进程和启动它的App,各是一个链接
  • 在登录时启动它的Launch Agent或Launch Daemon
  • 完整的命令行,以及打开后可见的环境
  • 子进程,各有自己的数据
node
终端 · PID 60412
父进程zsh (60120) 启动者终端 (581) 参数node_modules/.bin/next dev --port 3000
子进程
next-router-worker60418212 MB
next-render-worker60421180 MB
esbuild6043048 MB
父进程、启动者和命令行 它下面的子进程
03用量

自启动以来的CPU时间、内存峰值、打开的文件和监听端口。

百分比说的是这一秒。面板涵盖进程的整个生命周期:自启动以来的CPU时间,分为它自己的工作和内核替它做的工作;当前内存与它曾占用的最高值之比;线程、打开的文件、页面输入、读取和写入的字节、它正在监听的端口,面板打开时还有CPU和内存的实时图表。

  • CPU时间,分为用户和系统
  • 当前内存,占历史峰值的比例
  • 线程、打开的文件、页面输入、磁盘读取和写入
  • 监听端口,以及面板打开期间的实时图表
com.docker.backend
Docker · PID 20311
资源使用情况
CPU时间 3h 8m用户 2h 0m · 64%系统 1h 8m · 36% 内存 1.57 GB · 峰值 2.04 GB 的 77% 线程48 打开的文件241 读取字节4.2 GB 写入字节1.1 GB
自打开此面板起。CPU 2.1% · 1.57 GB
自启动以来,而不只是这一秒 边看边画出图表
04App

App的版本、软件包ID和Info.plist,以及它下面的每个进程。

打开一个App,它的“详细信息”卡片会给出版本、软件包ID、位置、代码签名和由什么启动,点一下就能看到完整的Info.plist。它的进程列在下方,每个点一下就能看到详细信息。刚启动的进程带有“新”标记,最近十分钟内结束的进程仍留在列表中,所以一次崩溃或来了又走的帮助程序不会丢失。

  • 版本、软件包ID和完整的Info.plist
  • 每个进程,刚启动的带有“新”标记
  • “最近结束”:最近十分钟内关闭了什么
  • 选择表格的列,并用/a regex/过滤
Docker
详细信息
版本4.88.1 软件包IDcom.docker.docker 签名Docker Inc · 团队ID 9BNSXJN65R Info.plist31
进程点按进程以查看详细信息
Docker20288112 MB
com.docker.backend203111.57 GB
com.docker.build20340新增64 MB
最近结束2
Info.plist,点一下就看到 最近十分钟内结束了什么
05导出

把进程导出为CSV,或在“终端”中运行vitals process。

每个面板都有导出菜单:“拷贝为文本”用于消息或错误报告,“存储为CSV”用于电子表格,都包含Info.plist和授权。在“终端”中,vitals process按名称或PID返回任何进程的同样内容,AI助手则通过MCP的process_details工具获取。

  • 拷贝为文本,或存储为CSV
  • vitals process node,或按PID,加--json供脚本使用
  • --env加上环境,--plist加上Info.plist
  • 通过MCP给Claude、Codex和Cursor的process_details工具
拷贝为文本
存储为 CSV…
~ vitals process node
node pid 60412 Terminal
~/.nvm/versions/node/v24.15.0/bin/node
user me · since 9:53 AM (2d 4h) · parent zsh (60120)
Apple silicon · signed by Node.js Foundation (HX7739G8FX)
arguments node_modules/.bin/next dev --port 3000
● CPU0.6% · 1h 52m in all · user 91%, system 9%
● Memory486 MB · peak 797 MB · real 210 MB
● Ports3000
拷贝为文本,或存储为CSV 通过MCP给助手同样的内容
为什么重要

进程检查器:之前与之后

活动监视器的“检查”窗口给出进程的父进程、用户、CPU时间、内存、打开的文件和端口,以及取样。它不会说谁签名、一个光秃秃的node属于哪个App、登录时由什么启动,或完整的命令行是什么。要查这些,你得打开“终端”:codesign查签名,ps查参数,launchctl查由什么启动,lsof查端口,plutil查Info.plist。

问题通常比这简单。这是什么?一个叫Helper的进程,一个没人记得启动过的python,一个名字像com.apple.something、用掉半个核心的东西。它是我安装的App的一部分吗,是Apple的吗,它应该在运行吗?

Vitals在一个面板里回答:进程所属的App和它是哪种进程,它的代码签名和授权,它的父进程和命令行,它启动的进程,以及它自启动以来用掉的CPU时间、内存、文件和端口,版本、Info.plist和授权折叠在下方。同样的答案也以CSV、“终端”中的vitals process,以及AI助手的工具形式提供。

使用方法

在Vitals中的位置

标签页、菜单栏项和设置,按你会用到的顺序排列。

  1. 01

    点按任意进程打开它的面板

    在任意标签页中,点按一个App,再点按它的一个进程,或在App的面板中悬停在某个进程上并点按ⓘ。面板就会打开到它。⌘F按名称查找进程,/a pattern/用正则表达式搜索。

  2. 02

    逐个部分阅读面板

    “身份”,然后是“App”或“可执行文件”、“安全性”、“资源使用情况”、“磁盘”、“网络”和“子进程”。Info.plist、“授权”和“环境”折叠起来,直到你打开它们。父进程、启动者和每个子进程都是链接:点一下就跳转过去。

  3. 03

    选择进程表格的列

    工具栏中的“列”按钮添加或移除标签页的列:PID、用户、路径、版本、启动时间、闲置唤醒和各项读数。每个标签页保留自己的选择。

  4. 04

    拷贝、存储为CSV,或在“终端”中查询

    面板标题中的共享按钮提供“拷贝为文本”和“存储为CSV”。在“终端”中,vitals process <name>或vitals process <pid>,加--json、--env或--plist。通过MCP,则是process_details工具。

对比

进程检查器:活动监视器与Vitals

完整对比会逐项列出。以下是与进程检查器有关的几项。

活动监视器 Vitals
一个进程的详细信息
活动监视器“检查”窗口:父进程、用户、CPU时间、内存、打开的文件和端口
Vitals这些,再加上它的App、签名、授权、命令行、由什么启动、历史峰值和子进程
代码签名
活动监视器不显示;要在“终端”中用codesign
Vitals签名者、团队ID、强化运行时、沙盒和授权
父进程和命令行
活动监视器父进程的PID
Vitals父进程、启动它的App、launchd任务和命令行
App的版本和Info.plist
活动监视器不显示
Vitals版本、软件包ID和完整的Info.plist
已结束的进程
活动监视器从列表中消失
Vitals“最近结束”,保留十分钟
导出
活动监视器取样或Spindump,以文本形式
Vitals“拷贝为文本”、“存储为CSV”、vitals process --json
取样和spindump
活动监视器好
Vitals否

背后的术语

这些数字是什么意思,摘自活动监视器术语表。

问题

购买前,大家关于进程检查器最常问的问题。

如何打开进程检查器?

在任意列表中点按一个进程,它的面板就会打开。在App的面板中,每个进程是一行:点按它,或点按悬停时出现在它旁边的ⓘ。按⌘F按名称查找进程,输入/a pattern/可用正则表达式搜索。

进程的代码签名能告诉我什么?

谁构建了这段代码。带团队ID的名称是Apple已识别的开发者,例如Google LLC或Docker Inc。Apple自己的进程显示Apple。“已签名,无证书”是在Mac上构建、没有具体签名者的工具,这对Homebrew和你自己编译的东西来说很正常。“未签名”表示完全没有签名。下方是:它是否使用强化运行时、是否在沙盒中运行,以及它被授予的每一项授权。

Vitals能告诉我某个进程是否安全,或者是不是恶意软件吗?

它给你判断所需的事实:代码签名、父进程、它在哪里,以及它在做什么。有团队ID的知名开发者、沙盒,以及你认识的父进程,就是你希望看到的。没有签名、路径在隐藏文件夹里、还有一个你从未安装过的Launch Agent,就值得仔细看看。Vitals不扫描恶意软件;它告诉你那里有什么。

什么是CPU时间,为什么分为用户和系统?

CPU时间是进程自启动以来让一个核心保持忙碌的时长,累计计算:一个进程以单核50%运行两小时,就用了一小时。用户时间是进程自己的工作;系统时间是内核替它做的工作,比如读取文件或访问网络。一个做得不多却系统时间占比很高的进程,通常说明它在忙着向macOS要东西。

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

macOS只向进程所属的用户显示它的命令行、环境和累计总量。属于macOS或其他账户的进程会把这些留给自己;它的身份、签名和数据仍会显示,数据通过Vitals的可选帮助程序获取。在“设置”→“通用”中打开“完整系统指标”即可获取。

它会显示WindowServer和kernel_task这样的macOS进程吗?

会。它们的App是macOS,签名是Apple的,父进程是launchd。打开帮助程序后,它们的CPU和内存也会显示,面板的图表在打开期间持续运行。

我能看到进程的环境变量吗?

能,在面板末尾的“环境”部分,折叠起来直到你打开它,也能在“终端”中用vitals process --env查看。它们绝不会传给AI助手,因为环境里常常有密钥。

进程结束后,Vitals会保留它多久?

十分钟,在App的面板中,带有它的名称、启动和结束时间,以及它占用的内存。所以崩溃的帮助程序,或你不在时完成的构建,仍然能看到。

我能在“终端”中或从AI助手获取进程的详细信息吗?

有。vitals process node或vitals process 60412给出同样的详细信息,以文本显示,或加--json供脚本使用;--env加上环境,--plist加上App的Info.plist。Claude、Codex或Cursor这样的助手通过Vitals MCP服务器的process_details工具获取,需要时也包括Info.plist。

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

不能。那是活动监视器的功能,Vitals不照搬。Vitals回答的是进程是什么,附上它的代码签名、父进程和资源用量;要看挂起App的堆栈跟踪,打开活动监视器并按“取样”。

继续阅读

用到它的指南,以及Vitals与大家为此购买的App相比如何。

Vitals的更多功能

全部功能

首发价期间,终身版仅需$15

此价位剩余50份。 之后为$39;或$9享一年更新。一次付款,14天内可退款。

购买Vitals $15