在 Mac 上卸载 Stats
Stats 在装菜单栏应用本体的同时,还会安装一个有特权的系统 helper 用来读取风扇转速和 SMC 传感器数据,所以要彻底移除就需要一步管理员密码授权,单纯拖进废纸篓触发不了这一步。Mole 实测卸载过 Homebrew cask stats 和 Stats 官方 GitHub 发布页的下载版,两者装的是同一个应用和同一个 helper,下面的步骤两者都适用。
退出并移除 Stats
从菜单栏图标退出 Stats,先保留「应用程序」里的 Stats.app,等下面的内置卸载脚本完成,它会删除应用、特权 helper 和应用数据,想保留设置就先导出或复制备份:
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 |
应用设置和状态 | 「卸载时一并移除数据和配置」默认关闭,此时不勾选,开启后符合条件的应用自有数据可以预先勾选 |
~/Library/Caches/eu.exelban.Stats |
可重新生成的缓存 | 默认勾选 |
~/Library/Containers/eu.exelban.Stats.Widgets 与 ~/Library/Group Containers/RP2S87B72W.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 print system/eu.exelban.Stats.SMC.Helper
ls -d ~/Library/Application\ Support/Stats
ls -d /Library/PrivilegedHelperTools/eu.exelban.Stats.SMC.Helper
pgrep 没有输出,表示没有找到匹配的 Stats 进程,launchctl print system/eu.exelban.Stats.SMC.Helper 直接查询系统 helper,找不到服务的错误表示它没有在 system 域加载,打印出服务记录则表示仍有注册,结合 state 和 pid 判断是否正在运行,权限或其他查询错误表示这项尚未确认。两条 ls 分别核对数据文件夹和 helper 文件是否还在,另行检查 /Library/LaunchDaemons/eu.exelban.Stats.SMC.Helper.plist,脚本完成后再看 Stats.app 是否仍在,有剩余才移到废纸篓,风扇需要恢复自动控制时重启。
用 Homebrew 安装时
Mole 会先检查 zap 清单,涉及未勾选的数据、其他应用共用的文件或无法确认的内容时不执行 --zap,已勾选的残留仍由 Mole 清理。
自己执行 brew uninstall --cask --zap stats 时是这样的:这个 cask 自己的 uninstall 步骤只会卸载 SMC helper 的 LaunchDaemon 并退出应用,本身并不会删除 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 卸载时:
~/Library/Application Support/Stats在「卸载时一并移除数据和配置」关闭时默认不勾选,开启后符合条件的应用自有数据可以预先勾选,想保留设置就取消勾选。~/Library/Caches/eu.exelban.Stats、小组件容器~/Library/Containers/eu.exelban.Stats.Widgets和它的 Application Scripts 文件夹默认勾选,组容器~/Library/Group Containers/RP2S87B72W.eu.exelban.Stats.widgets会列出但默认不勾选。/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 授权。2026 年 9 月 26 日又从官方 GitHub 下载 Stats 3.0.17 重装,用 Mole 的开发构建全选卸载,应用和 10 个列出的项目都进了废纸篓,原来清单上的 10 个路径都已不在原处,这一轮没有装过 SMC helper,所以 helper 只在第一次测试里覆盖到。两次都没有运行 Stats 自带的 uninstall.sh 脚本,上面给出的命令来自项目自己的文档。
