IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

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

    血衫非弧の一存发表于 2024-10-09 00:00:00
    love 0

    最近在使用 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 进程(不建议):

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

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

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

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



沪ICP备19023445号-2号
友情链接