为什么 Mac 在没有打开任何东西时说“磁盘正在使用”

你已经关闭了每一个 App。没有访达窗口打开着。可 macOS 仍坚称有东西在使用你的驱动器。这里说明实际正在发生什么。

你已经关闭了一切。Safari,没了。访达窗口,关了。你正在编辑的那个文稿,存了并退出了。你点按外置驱动器上的推出,macOS 却告诉你有东西仍在使用它。

你又检查了一遍。没有任何可见的程序在运行。哪里都没有进度条。就你所能看到的,驱动器只是待在那里,什么也没做。但某个对你不可见的东西,把它的钩子扎进了你的磁盘。

这是 macOS 上最令人沮丧的体验之一,因为这个问题感觉根本不可能。你什么都做对了。你关闭了你的工作。而系统仍在阻止你,理由还不肯解释。

那些不可见的进程

Mac 上运行的大部分东西都是不可见的。在你与之交互的 App 背后,几十个后台进程处理着你从不会去想的任务:为搜索给文件编制索引、生成缩略图、同步数据、监测变化。

这些进程没有窗口。它们不出现在你的程序坞里。其中一些甚至不出现在活动监视器里,除非你知道该往哪里看。但它们全都能访问你的外置驱动器,而它们中的任何一个都可能阻止推出。

当 macOS 说“可能有一个或多个程序正在使用”你的磁盘时,它通常并没有撒谎。确实有东西在使用它。毫无帮助的地方在于,macOS 拒绝告诉你是什么。

常见的嫌疑对象

聚焦是最常见的隐形元凶。你一连接外置驱动器,聚焦就开始为它编制索引。那些索引进程(mdsmds_storesmdworker)在后台运行,没有任何可见的迹象表明它们正在工作。它们可能把文件保持打开几分钟乃至几小时,取决于驱动器上有多少内容。

快速查看更鬼祟。当你浏览一个文件夹时,macOS 会生成缩略图和预览。那些快速查看进程(QuickLookUIServicequicklookd)有时即便在你关闭访达窗口之后也仍攥着文件句柄。你十分钟前看过那个文件夹,但快速查看还在惦记着它。

时间机器,如果启用了,会持续监测备份驱动器。即便没有备份在运行,backupd 进程也会与时间机器宗卷维持连接。它在监视变化,随时准备开始下一次备份。

如果你在外置驱动器上存放了同步文件夹,iCloud 和其他同步服务就能访问它们。同步守护进程可能正在检查文件状态,或等着上传更改。

访达本身也运行着你看不到的后台操作。文件元数据更新、废纸篓管理和边栏计算全都在不知不觉中进行。关闭一个访达窗口未必就结束了访达与某个驱动器的关系。

找出罪魁祸首

看清是什么在阻止驱动器的唯一可靠方法是 Terminal。运行这条命令,把驱动器名称替换成你的:

lsof /Volumes/YourDriveName

这会列出每一个在驱动器上打开着文件的进程。输出虽是技术性的,但可以读懂。COMMAND 列显示进程名称,NAME 列显示它们打开着哪些文件。

你会看到的常见东西:

  • mdsmdworker:聚焦索引
  • QuickLookUIService:缩略图生成
  • Finder:一项访达操作或边栏引用
  • backupd:时间机器监测
  • birdcloudd:iCloud 同步

如果列表很长,你就找到了你的那些不可见用户。如果它是空的,问题可能已经自行解决了,你可以再试着推出。

省去手动步骤: Ejecta 会准确告诉你是哪个进程在占用硬盘——只需在菜单栏中点击一下即可退出它。 了解更多 →

停止那些不可见的进程

一旦你知道了是什么在阻止驱动器,你就有了选择。

对于聚焦,禁用该驱动器上的索引:

sudo mdutil -i off /Volumes/YourDriveName

这告诉聚焦别碰这个驱动器。如果你以后想搜索该驱动器的内容,可以重新启用索引。

对于快速查看,重置它的缓存:

qlmanage -r cache

这会清除快速查看所攥着的任何东西,通常会释放驱动器。

对于访达,按住 Option 键、右键点按程序坞中的访达图标、并选择“重新打开”来重启它。这会重置访达的所有连接。

对于其他进程,你可以从活动监视器退出它们。搜索进程名称,选中它,点按 X 按钮。大多数系统进程会自动重启,但驱动器应该会被释放。

预防这个问题

如果你不需要用聚焦搜索某个外置驱动器,就在系统设置的 Siri 与聚焦下把它添加到隐私列表。在这个列表上的驱动器永远不会被编制索引,这就消除了最常见的推出障碍。

在你外置驱动器的根目录创建一个名为 .metadata_never_index 的文件。聚焦会检查这个文件,并跳过为任何含有它的驱动器编制索引。这对于你在多台 Mac 之间搬动的驱动器很有用。

要留意你的外置驱动器上存放着什么。如果你在那里放了 iCloud 文件夹、同步文件夹或时间机器备份,那就预期后台进程会持续地访问它们。

更好的做法

每次想拔个驱动器都要在 Terminal 输出里翻找,很快就会让人厌烦。信息就在那里,但流程笨拙。

Ejecta 以一种更清爽的形式向你显示同样的信息。点按一个被阻止的驱动器,看清是什么在阻止它,再点一下关闭那个进程。无需记忆命令,无需解析输出。

底层的问题在于,macOS 运行着几十个能抢占你驱动器的不可见进程。知道它们的存在是第一步。而无需切换到 Terminal 就能明确看清究竟是哪一个在惹麻烦,是一种好得多的体验。

如果你不想每次都动用终端,Ejecta 会准确告诉你是哪个进程在占用硬盘——只需在菜单栏中点击一下即可退出它。

立即购买 — $9.99