← 返回 Debug 库

macOS:Spotlight - 索引进程重启

macOS Spotlight 搜索结果陈旧或缺失时,重启 mds 进程即可快速恢复,索引损坏时再重建数据库。

2026-07-11

系统与平台操作系统

macOS 聚焦搜索(Spotlight)偶尔会”罢工”——搜不到刚拉取/安装的应用,或结果陈旧。一条 sudo killall mds 就能让它在几秒内恢复。下面拆开看”问题 / 解法 / 原理”。

① 我出现的问题

在 macOS 上用聚焦搜索(右上角放大镜或 ⌘Space)时:

  • 搜不到我刚拉取或安装的应用程序和文件;
  • 搜出来的结果是陈旧缓存——文件明明已经在磁盘上,聚焦却像”眼盲”了一样捞不到。

② 解决方法

一行命令,重启底层索引引擎:

sudo killall mds

进阶:如果 kill 之后仍不正常,说明索引数据库本身损坏,需要重建索引(慢、吃 CPU):

sudo mdutil -E /

一句话区分两者:

  • killall mds = 换了个清醒的图书管理员来查目录。速度快,专治进程卡死。
  • mdutil -E = 把整座图书馆的目录卡片烧掉重写。速度慢,专治索引库损坏。

③ 解决的原因

mds 全称 Metadata Server(元数据服务器),是负责 Spotlight 搜索的核心守护进程。你每次搜索,都是向后台这个默默运行的 mds 进程发请求,由它去庞大的索引数据库里捞结果。

作为开发者,电脑里经常瞬时产生大量文件 I/O(克隆大型 GitHub 仓库、编译生成缓存、更新依赖库),mds 偶尔会”消化不良”:

  • 陷入死锁:读某个权限异常或格式损坏的文件时卡住;
  • 内存泄漏 / 过载:海量小文件把内存吃爆,进程假死(Hang);
  • 缓存错乱:索引库已更新,但进程内存里的搜索树跑偏,导致它”眼盲”。

当你执行 sudo killall mds

  1. 强制斩杀——系统无视它卡在什么状态,直接把它从内存清掉;
  2. 系统级复活——macOS 的服务管理器 launchd 一直在监控核心进程,一旦发现 mds 意外死亡,会立刻自动拉起一个新的 mds 进程

新启动的 mds 头脑清醒,重新连接到硬盘上的索引数据库,顺利读到你那个应用程序的真实元数据,搜索功能自然就恢复了。