必须用lsof精准定位占用进程,再针对性终止:mds需关闭spotlight索引,cloudd需暂停icloud云盘,backupd需禁用time machine本地快照,最后option+强制清倒废纸篓。

文件被占用无法删除时,系统反复弹出“操作无法完成,因为文件已在另一程序中打开”提示,不是软件没关干净,而是后台进程、系统服务或内核级句柄仍在持续持有该文件——必须精准定位并切断占用源,才能真正释放文件。
用lsof精准查出谁在占用文件
这一步不能跳过。直接杀进程可能中断备份或索引,先看清是谁在读写才能安全处理。
打开终端 → 输入命令:lsof +D ~/.Trash → 按回车。
若废纸篓里有顽固文件,该命令会列出所有正访问废纸篓路径的进程及其PID。重点看COMMAND列:mds代表Spotlight正在扫描、cloudd说明iCloud同步未完成、backupd表示Time Machine正做本地快照、kextd可能是驱动相关临时加载——这些都不是用户手动启动的应用,必须针对性处理。
如果命令报错“permission denied”,说明你没权限读取系统进程列表,需改用sudo lsof +D ~/.Trash,输管理员密码后重试。
终止具体占用服务(按类型分操作)
方法一:停掉Spotlight实时索引(适用于mds占用)
Spotlight索引大量文件时会锁住路径,尤其刚拷贝完一堆文档进废纸篓就删,极易触发占用。
终端执行:sudo mdutil -i off / → 等几秒再执行:sudo mdutil -E / → 这会关闭索引并擦除当前索引缓存,释放所有mds持有的句柄。
注意:【此操作会清空Spotlight全部索引,重建需数小时,但能立刻解除文件占用】。重建期间搜索变慢,但不影响文件删除。
方法二:暂停iCloud同步(适用于cloudd占用)
iCloud Drive里删了文件又马上拖进废纸篓,cloudd常因同步队列未清空而持续读取原路径。
打开「系统设置 → Apple ID → iCloud → iCloud云盘」→ 关闭「iCloud云盘」开关 → 等状态栏iCloud图标变为灰色、不再转动 → 再尝试清倒废纸篓。
方法三:停止Time Machine本地快照(适用于backupd占用)
Time Machine会在磁盘空闲时自动生成本地快照,backupd进程会扫描包括废纸篓在内的全盘路径。
终端执行:sudo tmutil disablelocal → 输入密码确认 → 此命令立即停用本地快照功能,backupd对废纸篓的扫描行为随之终止。
完成后可立即清倒废纸篓,无需重启。
强制清倒废纸篓
点击Dock中的废纸篓图标 → 按住Option键不放 → 顶部菜单栏「访达」→「强制清倒废纸篓」→ 点击确认。











