解决 macOS 上的 mds_store 高 CPU 占用并停用 Spotlight 索引
2024-10-09 software mac 4 mins 1696 字
最近在使用 macOS 时,htop 的时候发现几个核的cpu都是100%满负荷运行,往下再查了一下,发现 mds_store
这个进程占用大量 CPU 资源,系统也非常卡顿(虽然不一定是这个进程造成的)。
mds_store
是 macOS Spotlight 索引服务的一部分,负责管理文件的元数据,让我们可以快速通过 Spotlight 搜索文件、邮件、应用等内容。当系统文件发生变化时(比如文件创建、修改、删除等),mds_store
就会进行重新索引,因此可能会占用大量的 CPU 资源,特别是在以下几种场景下:
- 文件频繁变动:比如大量文件的操作,像是开发项目、下载大文件等。
- 外接硬盘或网络驱动器:如果连接了外部存储设备,Spotlight 也会索引这些内容。
- Spotlight 索引损坏:有时候 Spotlight 的索引会损坏,导致系统反复尝试重新索引。
- 系统更新后重新索引:每次 macOS 大更新后,Spotlight 需要重新为整个系统创建索引。
mds_store
高 CPU 占用
-
重建 Spotlight 索引:有时候 Spotlight 的索引可能会出现问题,最简单的解决办法就是重建索引。打开终端,输入以下命令来删除并重建 Spotlight 的索引:
sudo mdutil -E /
-
排除某些文件或文件夹:如果有一些文件夹不需要索引,可以将它们从 Spotlight 中排除掉:
- 打开 系统偏好设置 → Spotlight → 隐私。
- 点击
+
,选择那些不想索引的文件夹,比如外接硬盘、开发项目目录等。
- 打开 系统偏好设置 → Spotlight → 隐私。
- 点击
-
关闭外接驱动器的索引:如果我们使用外接硬盘或网络驱动器,Spotlight 可能也会试图索引它们。关闭某个特定驱动器的索引:
sudo mdutil -i off /Volumes/ExternalDrive
替换
ExternalDrive
为实际的卷名,这样 Spotlight 就不会再去索引外接硬盘上的文件了。 -
检查大型文件或数据库:一些大型文件(如邮件库、照片库等)可能会让 Spotlight 花费大量时间去索引。如果这些数据不需要搜索,可以将它们排除在外。
停用 Spotlight 索引
有些时候我们不需要 Spotlight 的全局搜索功能,也可以停用 Spotlight 索引。方法很简单,可以通过终端来完全关闭 Spotlight:
-
完全停用 Spotlight:
sudo mdutil -a -i off
这会关闭所有卷上的 Spotlight 索引。关闭后,系统不会再为文件、邮件等内容建立索引,搜索功能也会被停用。如果之后想再次启用 Spotlight,只需执行以下命令:
sudo mdutil -a -i on
-
停用特定卷的索引:
sudo mdutil -i off /Volumes/YourVolumeName
这样 Spotlight 只会关闭指定卷的索引,不影响系统其他部分的搜索功能。
-
停用 mds 进程(不建议):
其实,强行终止
mds
和mdworker
进程也是一种方式,但 macOS 会定期重新启动这些进程。所以更推荐使用mdutil
命令进行停用。如果坚持要这么做,可以运行以下命令:sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist
这个命令会停止
mds
进程,但是我不推荐,因为这可能会影响系统的一些其他功能。
虽然 Spotlight 是 macOS 中非常强大的搜索工具,但有时候它也会给系统带来不小的负担。根据实际需求,适当地调整 Spotlight 的行为,甚至在必要时完全停用它,能够显著改善系统的性能。