如果您的 Mac 提示某个文件正在使用中或无法移动,请先检查可能打开该文件的 App。若要获取准确答案,可以使用内置的终端命令 lsof 加上文件的完整路径;其输出结果可以识别出保持打开引用的进程。随后正常退出该 App,并重试文件操作即可。macOS 并没有提供总能指明责任 App 的访达按钮。

首先,检查文件是否确实处于打开状态

苹果建议,当项目无法移动或拷贝时,请先确保它没有在其他 App 中打开。检查可能相关的 App(例如文稿编辑器、图像查看器、媒体播放器或显示预览的窗口),并在 App 内关闭该文件。请先存储所有更改。如果您在文件上看到锁图标,那可能是单独的文稿锁定设置;文件处于打开状态与文件被锁定是两个不同的问题。苹果的移动和拷贝指南对这两项检查均有说明。

“访达”警告有时会指出具体的 App 名称,但也可能仅提示该项目正在使用中。“活动监视器”列出了正在运行的 App 和进程,并会标记出部分未响应的进程,但它并不是一个可供搜索“哪个进程打开了特定文件”的列表。在您有理由怀疑某个进程后再使用它进行处理,而不是仅凭 CPU 或内存占用去猜测。

使用终端识别进程

lsof 命令意为“列出打开的文件”(list open files)。其文档涵盖了查找使用特定文件的进程,并且支持 macOS。lsof 项目文档给出了基本格式:lsof /path/to/file。

  1. 在“访达”中找到该文件,然后选取文件 > 显示简介以确认其名称和位置。根据该位置和文件名拼出完整路径。在强制区分大小写的磁盘格式上,路径是区分大小写的;只要整个路径包含在引号内,路径中的空格就不会有问题。

  2. 从“应用程序”>“实用工具”中打开“终端”,然后运行以下命令(将示例路径替换为实际路径):

lsof "/Users/yourname/Documents/Project Notes/report.pdf"
  1. 查看结果。COMMAND 列显示进程或 App 的名称,PID 是其进程 ID。NAME 列应显示您查询的文件路径。如果出现多行或多个进程,请记下所有匹配的名称:可能有多个进程同时打开了一个文件。进程名称可能与 App 广为人知的名称不同,因此在决定退出什么之前,请先在“活动监视器”中搜索该确切名称。

该命令仅报告其有权检查的引用。如果未返回任何匹配行,可能是 App 已经释放了该文件、您的路径有误,或者 macOS 不允许您的用户账户检查相关进程。请检查路径,并在警告仍然存在时重试。如果您了解该命令并需要检查其他用户的进程,sudo lsof "/full/path/to/file" 可能会要求输入管理员密码;提升权限可以显示更多信息,但应仅用于此项只读检查。lsof 的文档还提醒,随着进程状态的改变,它可能会遗漏某些文件。空白结果并不能证明没有任何 App 使用过该文件。

安全退出识别出的 App

请先存储工作,并优先使用 App 自身的退出命令。如果它没有响应,请打开“活动监视器”,按名称找到该进程并选中它,然后点按“停止”按钮。在选择强制退出之前,请先尝试退出。苹果指出,“强制退出”会立即终止进程;未存储的工作可能会丢失,依赖该进程的其他 App 也可能会出现问题。某些进程属于 macOS 或为其他 App 提供支持,因此切勿仅仅因为某个陌生的系统进程出现在输出中就对其强制退出。苹果的“活动监视器”说明解释了这一区别以及如何分层查看进程。

退出可能占用文件的程序后,在相同路径上重新运行 lsof。如果匹配的进程已消失,请重试移动、拷贝或删除该文件。如果仍然存在,请检查其他匹配的进程名称,并在采取更进一步的措施前正常关闭它们的文件。

如果没有 App 出现

没有结果并不意味着问题一定是由 App 锁定引起的。请检查您查询的是否为原始文件的确切路径,然后考虑苹果文档中记录的其他原因:项目被锁定、空间不足、目的位置权限问题,或者 macOS 无法写入的外置驱动器格式。在网络或外置储存设备上,连接状况或宗卷状态也可能会影响操作。重新启动可能会清除失效的残留引用,但请先存储工作,并在排查了较简单的原因后再进行重启。苹果的移动或拷贝项目时的故障诊断步骤涵盖了其中的几种其他可能。

实用的操作顺序是:验证路径、在问题发生时使用 lsof、彻底退出识别出的 App,然后重试。将强制退出作为最后手段;当权限限制或进程状态变化可能隐藏占用者时,请将空命令结果视为非决定性结论。

参考资料