Mole 的优化功能做了哪些事
Mole 的优化页把几类系统维护放在了一起,输入法切换不灵、文件预览有问题、卸载软件后还留着启动项,都有对应的处理。但有些操作也会清掉历史记录、重置设置,点下去之前,值得知道它具体会动哪些东西。
本文以 Mole 1.16.0 的 Optimize 为例,命令行版的做法有所不同。整个过程先做四项服务刷新,再检查十七项维护任务,后面的项目各有条件,并不会每次都执行。
先刷新四项系统服务
如果其他任务还在运行,Mole 会先等它释放操作锁,再检查许可,然后依次尝试刷新这四处:
- 输入法切换:重新启动输入菜单和切换相关的进程,中间可能短暂停顿。
- Spotlight:刷新搜索界面,搜索索引保留。
- 通知中心:刷新界面进程,通知历史在这一步保留。
- 通用剪贴板:刷新接力功能用到的服务,本机剪贴板和接力开关保持原样。
具体做法是结束匹配的系统进程,交给 macOS 重新启动。没有找到进程,或者没能结束它,就会记为未刷新。刷新后还是需要试一下原来的操作,看看问题有没有解决。
这四步做完,才会读取系统状态,按需准备管理员权限。已经配置好管理助手时,未必每次都要输入密码;拒绝授权后,不需要管理员权限的维护仍会继续,需要权限的几项则无法执行。
重建预览缓存,按需释放内存
接下来先重置 Quick Look 的预览组件,再重置缩略图缓存,并尝试清理三处指定的用户缩略图、图标缓存。这些操作要用到系统工具,工具不存在时会跳过;缓存之后还会重新生成。这里有多处缓存,结果显示完成时,也可能还有个别位置没清掉。
内存缓存只在检查结果显示警告或严重内存压力时处理,需要管理员授权,压力正常就跳过。释放的缓存之后还会重新积累,也可能需要重新读取内容,不能靠这一步保证 App 变快。
整理历史记录和数据库
这部分依次检查四类内容,都会用到普通用户权限。
- 下载隔离事件历史:数据库存在、有记录,而且没有被保护时,删除其中的全部历史记录,再压缩数据库。下载的文件、文件上的隔离属性和 Gatekeeper 都保留。
- 邮件和信息数据库:只在对应 App 已退出、数据库小于 100 MiB、完整性检查通过,而且空闲页至少占 5% 时压缩。处理的是数据库内部的空闲空间,邮件和聊天记录不会被主动删除。
- 系统共享列表:检查指定的 .sfl2、.sfl3 文件,最近文档和受保护的系统列表会保留。校验失败时会尝试直接删除列表,留给系统之后重新生成,里面记住的内容可能丢失。目前校验超时等错误也会触发删除,不能保证删掉的都是已经损坏的列表。
- 旧通知:用户通知数据库超过 50 MiB 时,清理其中三十天前的记录,压缩数据库,再尝试刷新通知中心。清掉的旧通知就看不到了。
数据库如果正在被占用,或是读取、写入出错,处理就可能失败。
清理旧规则、窗口状态和启动项
随后处理 Spotlight 的第三方规则。Mole 会让系统查找对应的 App,找不到就移除规则,Apple 和系统规则保留。这会修改搜索偏好,判断时采用的是系统的查找结果,没有逐块磁盘搜一遍,也不能据此认定 App 已经卸载。
窗口恢复状态按文件夹的修改时间判断,超过三十天就直接删除。应用以后可能记不住原来的窗口位置、布局或恢复会话。这一步没有另外检查 App 是否正在运行。
失效的用户后台启动项会放进废纸篓。Mole 要先确认程序使用完整路径、所在磁盘已挂载,而且文件确实不存在;Apple 和受保护的管理、安全软件会跳过。磁盘没接上、路径不清楚或没有权限判断时,会留下原文件。移走启动配置以后,已经运行的服务也不会在这一步被停止;需要恢复时,原文件还得留在废纸篓里。
第三方偏好文件如果能读到、却解析不了,而且没有受到系统保护或加入白名单,会被直接删除,不备份,也不进废纸篓,App 下次可能恢复默认设置。这一步同样没有要求 App 先退出,Apple、全局和登录窗口等受保护的偏好会保留。
「登录时打开」的项目需要管理员权限,有时还会请求自动化权限。确认所在磁盘已挂载、保存位置上的 App 已不存在后,Mole 才移除旧项目,再读一次列表确认。其他无法清掉的后台记录只会列出来,位置未知或无法访问的项目会保留。
还有两种以前留下的设置:禁用 App Nap,以及让磁盘镜像跳过验证。发现它们仍在启用时,Mole 会移除对应设置,让 macOS 恢复默认做法。
最后检查镜像、命令链接和权限
还挂着的磁盘镜像会尝试推出,镜像文件本身留下。只处理系统工具报告为只读、没有标记加密、挂载在用户卷目录下的镜像,macOS 管理的镜像会跳过。没有标记加密不等于已证明未加密;读写状态无法判断时会保留。正在使用的镜像可以拒绝推出,Mole 不会强制。这一步也不看挂载了多久,刚挂载的镜像同样可能被处理。
接着检查四处固定的 Homebrew 和本地命令目录,找出目标已经找不到的命令链接,只报告,链接留在原处。发现链接有问题,不会计为已修复;目录读不到时,也可能没有检查结果。
如果用户主目录不属于当前账户,或者当前用户无法写入自己的 Library,Mole 会调用系统工具重置这个账户的目录权限,可能改变所有权和访问控制列表。这需要管理员权限,处理范围是当前账户,系统隐私权限需要另行设置。
最后是 macOS 自带的周期维护。系统工具可用,而且日常维护日志缺失、日期无法确定或超过七天时,运行每日、每周、每月维护脚本,需要管理员权限。近期已经维护过,或系统没有这套工具,就跳过,具体维护内容由当前 macOS 的脚本决定。
运行之后,再试一次原来的操作
结果里可以看到哪些完成、哪些跳过、哪些失败。跳过的原因可能是不需要处理、加入了白名单,也可能是访问受限,最好连同原因一起看。一项任务处理多个文件时,部分成功也可能显示完成;看到失败时,之前已经做过的修改也不会自动撤回。
中途点取消,会停止后续步骤,当前已经开始的命令或文件批次可能还要继续一会儿,删掉的内容和改过的设置不会自动恢复。单个命令的超时也不是整次优化的时间上限。
如果你用 CLI Optimize 的白名单排除任务,十七项维护里有十三项会读取对应配置。前面的四项服务刷新,以及 Quick Look 的两项重置、镜像推出和命令链接报告,不受这份白名单控制。
最后再试一次刚才出问题的操作,比如切换输入法、打开预览,或者在同一组设备之间复制。如果 Mac 一直运行正常,不必每天点一次优化;觉得卡顿时,可以先看看内存压力,再按维护指南继续排查。虚拟机磁盘回收则在清理页,有单独的确认流程,不在这次优化里。