Apple 多年来一直忽视的 Mac 推出问题
自 PowerPC 时代起,Mac 用户就一直抱怨含糊的推出错误消息。Apple 从未修复它。这里是这个令人沮丧问题的来龙去脉。
试着在 Mac 上推出外置驱动器,有时你会看到这样一条消息:“磁盘未能推出,因为可能有一个或多个程序正在使用它。”
一个或多个程序。可能正在使用它。不是“正在使用它”。也没说是哪些程序。只是一句含糊的指控,说某处的某个东西可能打开着一个文件。
这条错误消息以基本相同的形式存在了十五年以上。Mac 用户至少从 Snow Leopard 时代起就在 Apple 的支持论坛上请求修复它。抱怨贯穿了每一个 macOS 版本:Mountain Lion、Mavericks、Catalina、Monterey、Ventura、Sonoma、Sequoia。这条消息从未改变。Apple 从未修复它。
问题显而易见
当你无法推出一个磁盘时,你需要两条信息:是什么进程在阻止它,以及如何停止那个进程。macOS 两者都不给你。
操作系统明明确切知道是哪个进程在驱动器上打开着文件。它必须知道,因为这正是它判断是否允许推出的依据。但 macOS 没有分享这条信息,而是给了你一个文本形式的耸肩表情。
把这与 Terminal 命令 lsof 对比一下,后者会列出在给定路径上打开着文件的每一个进程。信息是存在的。它是可获取的。Apple 只是选择了不把它放进错误对话框。
用户实际会怎么做
面对这条毫无用处的错误消息,Mac 用户形成了一整套变通办法,靠论坛帖子和博客评论口口相传。
乐观的人会等一等再试一次,希望那个神秘的进程自己结束。有时这管用。但往往不管用。
懂技术的人会打开 Terminal 运行 lsof /Volumes/DriveName,然后解析输出以辨认肇事者。这要求你知道这条命令的存在、懂得如何读懂它的输出,并对终止进程感到自在。
不耐烦的人会强制推出,祈祷一切顺利。有时这没问题。有时它会损坏数据。不知道究竟是什么在使用驱动器,就无从评估风险。
沮丧的人干脆重启他们的 Mac。这肯定管用,但拔个驱动器还得重启电脑,实在荒唐。
Apple 为什么没有修复这个问题?
只有 Apple 自己确切知道,但有一些说法:
错误对话框需要改动,而 Apple 历来回避给面向用户的消息增加复杂性。但“Safari 正在使用此磁盘”并不比“可能有一个或多个程序正在使用它”更复杂。它更有用。
在某些边缘情况下,阻止进程的列表可能很长或令人困惑。确实如此,但显示最主要的肇事者,也远比什么都不显示要好。而对于边缘情况,一个“显示详细信息”按钮是标准做法。
大多数用户撞上这个问题的频率不够高,不至于大声抱怨。也许吧,但 Apple 支持社区和 MacRumors 论坛里满是多年来的帖子。这个问题有据可查。
真正的答案多半是优先级。Apple 的工程资源有限,而这个问题虽然恼人,却并不妨碍人们使用他们的 Mac。它只是让人每隔几周对着屏幕咒骂几句而已。
问题正在恶化
随着外置存储变得越来越普遍(高速 USB-C SSD、用于视频剪辑的便携式驱动器、用于时间机器的备份驱动器),用户撞上这个错误的频率更高了。
macOS 也在运行更多访问外置驱动器的后台进程。聚焦索引、时间机器监测、iCloud 同步、各种守护进程。潜在阻止者的数量增长了,而错误消息却依然一样含糊。
从较旧 Mac 迁移过来的用户报告说,这个问题在 Apple 芯片机器上出现得更频繁。这究竟是软件上的变化,还是仅仅是一种感觉,尚不清楚,但自 M1 转型以来,抱怨已愈发强烈。
第三方解决方案确实存在
第三方开发者围绕这个问题构建了整套应用程序,这本身就说明了点什么。
What’s Keeping Me 曾是一款流行的实用工具,它会显示是哪些进程在阻止一个驱动器。它在多年前就被放弃了,如今在现代 macOS 上已不再可用,但它的存在证明了对这项功能的需求。
各种菜单栏实用工具和脚本应运而生,以填补这一空白。一些会监测驱动器,并在推出问题发生之前向你发出警告。另一些则自动化了 lsof 流程,让你不必键入 Terminal 命令。
这些工具本不该需要存在。它们所提供的功能,是 Apple 选择不予暴露的基本操作系统能力。
修复会是什么样子
最小可行的修复很简单:把错误对话框改成说明是哪个进程在阻止推出。“磁盘无法推出,因为聚焦正在为它编制索引”明确告诉你正在发生什么。你可以等索引完成,或退出聚焦,或在知晓风险的情况下决定强制推出。
更好的修复会增加一个直接从对话框退出阻止进程的选项。“Safari 在此磁盘上打开着文件。[退出 Safari 并推出] [取消]”只需一键就解决了问题,无需用户在活动监视器里翻找。
理想的修复会是主动式的:当你在外置驱动器上有未保存的更改时,或当后台进程正在积极使用它时,向用户发出警告。在人们尝试推出并感到沮丧之前就让他们知道。
这些在技术上都不难。最难的部分,多半是做出“去改它”这个产品决定本身。
眼下
Apple 也许最终会修复这个问题。众所周知,当条件成熟时,他们会处理一些长期存在的烦恼。在那之前,变通办法依然如故:Terminal 命令、活动监视器的侦查工作,或像 Ejecta 这样替你完成侦查工作的工具。
拔个驱动器本不该这么难。但它就是这么难,而且多年来一直如此,而 Apple 似乎并不在意。
如果你不想每次都动用终端,Ejecta 会准确告诉你是哪个进程在占用硬盘——只需在菜单栏中点击一下即可退出它。
立即购买 — $9.99