在 Mac 上卸载 Stats
Stats 在装菜单栏应用本体的同时,还会安装一个有特权的系统 helper 用来读取风扇转速和 SMC 传感器数据,所以要彻底移除就需要一步管理员密码授权,单纯拖进废纸篓触发不了这一步。Mole 实测卸载的是 Homebrew cask stats;Stats 官方 GitHub 发布页的直接下载版安装的是同一个应用和同一个 helper,下面的步骤两者都适用,但只有 Homebrew 卸载实际测过。
退出并移除 Stats
从菜单栏图标退出 Stats,再把 Stats.app 从「应用程序」拖进废纸篓。Stats 项目自带一个卸载脚本,一步就能删掉应用本体、特权 helper 和它的数据,如果打算彻底移除 Stats,这是最完整的方式:
sh /Applications/Stats.app/Contents/Resources/Scripts/uninstall.sh
如果已经把 Stats.app 拖进了废纸篓,同一个脚本在项目仓库里是 Kit/scripts/uninstall.sh。先在那里看过内容,保存到本机,再用 sh 运行保存的副本;不要把下载的内容直接交给 shell 执行。
这个脚本会要求输入管理员密码,因为下面这个 SMC helper 是以 root 身份运行的,删除它需要这个授权。Stats 项目文档里连同应用本身一起记录了这个卸载脚本。
Stats 的数据放在哪里
| 位置 | 里面是什么 | 如何处理 |
|---|---|---|
~/Library/Application Support/Stats |
应用设置和状态 | 会列出但默认不勾选:Mole 把应用同名的 Application Support 文件夹当作用户数据,留给你自己确认 |
~/Library/Caches/eu.exelban.Stats |
可重新生成的缓存 | 默认勾选 |
~/Library/Containers/eu.exelban.Stats.Widgets 与 ~/Library/Group Containers/eu.exelban.Stats.widgets |
桌面小组件的状态,只有在 Stats 设置里打开过「macOS 小组件」才会用到 | 默认勾选;如果从没启用过小组件,这两处是空的 |
/Library/LaunchDaemons/eu.exelban.Stats.SMC.Helper.plist 与 /Library/PrivilegedHelperTools/eu.exelban.Stats.SMC.Helper |
读取风扇转速和 SMC 传感器的特权 helper,安装时经过管理员授权 | 属主是 root;只有 Stats 自带的卸载脚本,或者 Mole 里经管理员授权的一步,才能删掉它,单纯拖进废纸篓做不到 |
检查结果
在终端运行下面这些只读命令:
pgrep -il stats
launchctl list | grep -i exelban
ls -d ~/Library/Application\ Support/Stats
ls -d /Library/PrivilegedHelperTools/eu.exelban.Stats.SMC.Helper
pgrep 没有输出,说明 Stats 已经退出。launchctl list 没有输出,说明 SMC helper 没有被加载;出现 eu.exelban.Stats.SMC.Helper 一行说明它还在。对 Application Support 路径执行 ls,能看出应用数据是不是还在。对 PrivilegedHelperTools 路径执行 ls,能看出属主为 root 的 helper 二进制文件是不是还装着;提示「No such file or directory」说明它已经没有了,读取风扇数据的能力也随之消失。
用 Homebrew 安装时
下一次 Mole 更新会先检查 zap 清单,涉及未勾选的数据、其他应用共用的文件或无法确认的内容时不执行 --zap,已勾选的残留仍由 Mole 清理。Preview 290 尚未包含这项保护。
Preview 290 中,Mole 卸载 Homebrew 装的 Stats,相当于执行 brew uninstall --cask --zap stats。这个 cask 自己的 uninstall 步骤只会卸载 SMC helper 的 LaunchDaemon(launchctl 停止加载)并退出应用,本身并不会删除 helper 的文件:删除 /Library/LaunchDaemons/eu.exelban.Stats.SMC.Helper.plist 和 /Library/PrivilegedHelperTools/eu.exelban.Stats.SMC.Helper、并请求管理员权限,是 --zap 步骤才会做的事。zap 清单剩下的部分覆盖 Application Support、Caches、Cookies、HTTPStorages、偏好设置,以及小组件的 Containers 和 Group Containers,还有 LaunchAtLogin 和 Widgets 两个 helper 各自的 Application Scripts 路径。实测记录里,小组件那组、偏好设置和 helper 都被清掉了,删除 SMC helper 这一步需要 Touch ID(或密码)授权。Homebrew Stats cask
brew uninstall --cask stats
不带 --zap,仍然会执行 cask 自己的 uninstall 步骤,SMC helper 的 LaunchDaemon 会被停止加载、应用也会退出,但 helper 的 plist 和二进制文件还留在 /Library 下,属主是 root,只是不再加载;这样也会留下 Application Support、Caches 和小组件的容器。想连 helper 文件一起清掉,运行上面的卸载脚本,或者带上 --zap。
Mole 会列出什么
以下是 Mole 1.15(目前为 Preview)的处理:
~/Library/Application Support/Stats会列出但默认不勾选:Mole 把应用同名的 Application Support 文件夹当作用户数据,留给你自己确认。~/Library/Caches/eu.exelban.Stats,以及小组件的 Containers 和 Group Containers 都默认勾选。/Library下的 SMC LaunchDaemon 和特权 helper 二进制文件,和其他属主为 root 的 helper 一样,删除需要管理员授权(Touch ID 或密码);Mole 会在卸载过程里请求这一步。- Mole「启动项」列表里的
LaunchAtLogin、SMC、Helper三行,只在 Stats 还装着的时候作为信息行出现,卸载 Stats 后就会从列表里消失。
这次检查覆盖了什么
Stats 通过 Homebrew cask stats 安装,于 2026 年 9 月 17 日经 Mole 卸载,小组件的 Group Container、偏好设置和 SMC helper 都被清掉,卸载后没有发现残留的 launchd 任务,删除 SMC helper 这一步需要 Touch ID 授权。这次测试没有单独卸载官网直接下载版,也没有直接运行 Stats 自带的 uninstall.sh 脚本;上面给出的命令来自项目自己的文档。
