解决 macOS 上的 mds_store 高 CPU 占用并停用 Spotlight 索引

最近在使用 macOS 时,htop 的时候发现几个核的cpu都是100%满负荷运行,往下再查了一下,发现 mds_store 这个进程占用大量 CPU 资源,系统也非常卡顿(虽然不一定是这个进程造成的)。

mds_store 是 macOS Spotlight 索引服务的一部分,负责管理文件的元数据,让我们可以快速通过 Spotlight 搜索文件、邮件、应用等内容。当系统文件发生变化时(比如文件创建、修改、删除等),mds_store 就会进行重新索引,因此可能会占用大量的 CPU 资源,特别是在以下几种场景下:

  • 文件频繁变动:比如大量文件的操作,像是开发项目、下载大文件等。
  • 外接硬盘或网络驱动器:如果连接了外部存储设备,Spotlight 也会索引这些内容。
  • Spotlight 索引损坏:有时候 Spotlight 的索引会损坏,导致系统反复尝试重新索引。
  • 系统更新后重新索引:每次 macOS 大更新后,Spotlight 需要重新为整个系统创建索引。

mds_store 高 CPU 占用

  1. 重建 Spotlight 索引:有时候 Spotlight 的索引可能会出现问题,最简单的解决办法就是重建索引。打开终端,输入以下命令来删除并重建 Spotlight 的索引:

    sudo mdutil -E /
    
  2. 排除某些文件或文件夹:如果有一些文件夹不需要索引,可以将它们从 Spotlight 中排除掉:

    • 打开 系统偏好设置Spotlight隐私。 - 点击 +,选择那些不想索引的文件夹,比如外接硬盘、开发项目目录等。
  3. 关闭外接驱动器的索引:如果我们使用外接硬盘或网络驱动器,Spotlight 可能也会试图索引它们。关闭某个特定驱动器的索引:

    sudo mdutil -i off /Volumes/ExternalDrive
    

    替换 ExternalDrive 为实际的卷名,这样 Spotlight 就不会再去索引外接硬盘上的文件了。

  4. 检查大型文件或数据库:一些大型文件(如邮件库、照片库等)可能会让 Spotlight 花费大量时间去索引。如果这些数据不需要搜索,可以将它们排除在外。

停用 Spotlight 索引

有些时候我们不需要 Spotlight 的全局搜索功能,也可以停用 Spotlight 索引。方法很简单,可以通过终端来完全关闭 Spotlight:

  1. 完全停用 Spotlight

    sudo mdutil -a -i off
    

    这会关闭所有卷上的 Spotlight 索引。关闭后,系统不会再为文件、邮件等内容建立索引,搜索功能也会被停用。如果之后想再次启用 Spotlight,只需执行以下命令:

    sudo mdutil -a -i on
    
  2. 停用特定卷的索引

    sudo mdutil -i off /Volumes/YourVolumeName
    

    这样 Spotlight 只会关闭指定卷的索引,不影响系统其他部分的搜索功能。

  3. 停用 mds 进程(不建议)

    其实,强行终止 mdsmdworker 进程也是一种方式,但 macOS 会定期重新启动这些进程。所以更推荐使用 mdutil 命令进行停用。如果坚持要这么做,可以运行以下命令:

    sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist
    

    这个命令会停止 mds 进程,但是我不推荐,因为这可能会影响系统的一些其他功能。

虽然 Spotlight 是 macOS 中非常强大的搜索工具,但有时候它也会给系统带来不小的负担。根据实际需求,适当地调整 Spotlight 的行为,甚至在必要时完全停用它,能够显著改善系统的性能。


mac studio 强制重启 macOS 模拟触摸板向下滑动