最近我的电脑一直卡顿,彩虹转圈圈一直出现,屏幕一会儿冻结一会儿恢复。就算把所有应用都关掉也毫无改善。 

我脑子里首先闪过的念头: 

M4 Pro 芯片的电脑竟然这样?什么情况?难道我花那么多钱就是为了体验这个?! 

为了确认到底是谁占用了 CPU, 我打开了 应用程序 → 实用工具 → 活动监视器 结果发现罪魁祸首是 Spotlight 无限循环索引

1. 什么是 Spotlight?

在顶部菜单栏的时钟旁边,有一个放大镜图标。 

截图 ▲ macOS 菜单栏中的 Spotlight 图标

点击它会出现“Spotlight 搜索”窗口。Mac 用户通常使用它来查找文件或应用。

Spotlight 是 macOS 的内置搜索引擎功能。 它会扫描电脑里的所有文件、应用、邮件与文档,并将它们记录在索引数据库中。 当你输入关键词时,Spotlight 就使用这个索引来快速返回搜索结果,就像一个迷你版的 Google。

但问题是:如果索引过程因为某些原因陷入“错误 → 重新索引 → 再次错误”的无限循环, CPU 占用就会飙升,整个系统会变得超级卡。 我当时把索引给删掉了,但却忘了让它重新生成,所以突然发现 Spotlight 什么都搜不到时,我完全懵了 -_-

2. 与 Spotlight 相关的基本终端命令

管理 Spotlight 索引的核心命令如下:

# 停止 Spotlight 索引
sudo mdutil -i off /

# 重新启用 Spotlight 索引
sudo mdutil -i on /

# 完全删除(重置)Spotlight 索引
sudo mdutil -E /

# 查看索引状态
mdutil -s /

# 强制重启 mds/mdworker(仅在出现问题时)
sudo killall mds
sudo killall mdworker
  

无论你在终端的哪个目录打开,这些命令都可以直接使用。 如果遇到无限索引循环,按照以下顺序即可解决:

① 停止索引 → ② 删除索引 → ③ 重新启用索引

macOS 会自动重新为全部文件建立索引。 一旦重建完成,Spotlight 搜索就会恢复正常!

3. 深度解析:Spotlight 索引文件到底存在哪里?

于是我开始好奇:

“Spotlight 的索引数据库到底存在哪里?”

首先我们来看看 Finder 中看到的顶层结构(根目录“/”)。

截图 ▲ Finder 中显示的根目录结构

然后是 /System 文件夹。

截图 ▲ macOS 的系统文件夹

接着查看 /System/Volumes。

截图 ▲ 系统内部隐藏的 Volumes 目录

但这里根本看不到“Data”卷。

截图 ▲ Finder 中并不会显示 Data 卷

但 Spotlight 索引真正的位置其实是:

/System/Volumes/Data/.Spotlight-V100/

也就是说,Data 卷确实存在,只是被 Finder 隐藏了。

4. 为什么 Finder 看不到 Data 卷?

原因是:macOS 使用 APFS(Apple 文件系统) 结构。 所谓“卷”,就是存储空间的分区容器。现代 Mac 一般包含以下卷:

操作系统(如 macOS Sequoia)安装在 Macintosh HD 上, 而用户安装的应用和文件则位于 Macintosh HD – Data 上。

但 Finder 不会展示真实的结构。 它会将这两个卷“合并”,以一个“Macintosh HD”形式展示出来。 (后台真正是分开的,只是 Finder 选择隐藏真实结构而已。)

因此即使 /System/Volumes/Data 真实存在,它在 Finder 里仍然不可见。

5. Data 卷里实际包含什么?

可以在终端中查看:

ls -al /System/Volumes/Data
  

里面不仅有用户文件,还有很多 macOS 运行所需的系统文件夹。

有趣的是:

在 Finder 的根目录下,你能看到 Library、Users、System、Applications。 打开自己的用户文件夹,会看到桌面、下载、文档等。 打开应用程序文件夹,可以看到所有应用。

但这些都不是文件真正的物理位置。 实际文件都存放在 Data 卷(System → Volumes → Data)中。 Finder 显示的“用户”“应用程序”只是被虚拟映射出来的位置。

那么,我们能直接查看 Spotlight 索引文件内容吗?

很遗憾,不能。macOS 会严格阻止你访问它们。

……下一篇要研究的主题:SIP(系统完整性保护)