如何阻止mediaanalysisd在macOS中占用你的CPU

关于扫描照片时mediaanalysisd 后台进程导致macOS中 CPU 使用率过高的各种报告。这是它的本质、作用以及如何阻止它。

在过去的一年里,互联网一直在讨论苹果是否一直在默默地分析用户的照片库以发送给执法部门。独立测试毫无疑问地证实它没有

但是,各种来源都报告了高 mediaanalysed CPU 使用率。这种后台处理会加载Mac的 CPU 并在不同程度上减慢您的机器。即使没有任何沉默的 Apple 报告,mediaanalysisd 也只是扫描照片库以用于 AI 目的,例如人脸识别和 Spotlight 索引。

无论如何,您可能希望禁用 mediaanalysisd 以防止过度使用 CPU。

为此,您首先需要禁用 macOS 的系统完整性保护 (SIP)。

如何在 macOS 中禁用系统完整性保护

要在 macOS 中禁用 SIP,请按照 Apple 的SIP 页面上的说明进行操作。

苹果警告说,禁用系统完整性保护只能是暂时的,之后应该尽快重新激活。该公司还表示,它可能会使您的计算机“容易受到恶意代码的攻击”。

禁用 SIP 涉及在恢复模式下重新启动 Mac,并在终端中输入:

csrutil disable

您可能需要也可能不需要通过更改目录的权限来解锁LaunchAgents目录本身。请务必将权限设置回完成时的状态。您可以使用 BatchMod 等第三方实用程序来执行此操作:

如何阻止mediaanalysisd在macOS中占用你的CPU

不要更改文件夹的用户或组权限,只需更改-rxw 权限。完成后一定要将它们改回原来的状态。

如何删除或禁用 com.apple.mediaanalysisd.plist
接下来,通过键入以下命令在终端中删除/System/Library/LaunchAgents/com.apple.mediaanalysisd.plist:

sudo rm -R /System/Library/LaunchAgents/com.apple.mediaanalysisd.plist

并按下Return。

然后重新启动您的 Mac。

Apple 的 com.apple.mediaanalysisd.plist 是 Launch Services守护程序加载程序文件,它告诉 macOS 在哪里可以找到 mediaanalysisd 二进制文件以及如何启动它。删除 com.apple.mediaanalysisd.plist 后,macOS 将不再在启动时或间歇性地启动它。

如果 macOS 自动重新生成 .plist 文件,您将需要直接编辑该文件以将com.apple.mediaanalysisd.photos设置设置为NO。默认为是。

请注意,编辑此文件可能会改变您的 Mac 的行为,甚至使部分功能无法正常工作,因此请您自担风险。

您可能还想尝试将 com.apple.mediaanalysisd.realtime 的值从 YES 更改为 NO。事实上,您可以尝试禁用除两个Homekit之外的所有 MachServices 设置。但同样,目前尚不清楚它们各自的作用。

但同样要注意,更改这些设置将禁用某些 macOS 功能——即 Spotlight 索引和照片和预览中的文本选择。

您可能还想尝试一下EnableTransactions设置,尽管还不清楚这个值是否告诉守护进程使用网络事务。

Apple 的 plist 文件只是XML文件。所以,如果您了解 XML,就可以使用任何文本编辑器或使用 Apple 的Xcode开发工具来修改它们。

在Xcode中编辑.plist 文件时,您会得到一个内置编辑器,它将 XML 转换为可编辑字段表,其中包含数据类型和中心列中某些类型的预设:

如何阻止mediaanalysisd在macOS中占用你的CPU

.plist 还为我们提供了有关实际守护程序二进制文件在 macOS 磁盘上的位置的线索。在“ProgramArguments”字段下:在“Item 0”中,我们看到一个值:

/System/Library/PrivateFrameworks/MediaAnalysis.framework/Versions/A/mediaanalysisd

所以 mediaanalysisd 二进制文件本身位于 MediaAnalysis.framework 包中。目前尚不清楚禁用此捆绑包会产生什么影响,但这样做需要您自担风险,因为我们尚未确定从系统中删除此框架的影响。

检查.plist 文件中的LaunchEvents->com.apple.xpc.activity字典,我们看到一些更有趣的项目。事实上,该词典包含五个照片分析项目:

  1. com.apple.mediaanalysisd.photosanalysis
  2. com.apple.mediaanalysisd.photos.visualsearch
  3. com.apple.mediaanalysisd.photos.face
  4. com.apple.mediaanalysisd.photos.maintenance
  5. com.apple.mediaanalysisd.photos.ocr

XPC(有时称为 IPC)是 Apple 的进程间通信技术,应用程序可以通过 XPC 服务相互通信——包括跨网络。

com.apple.mediaanalysisd.photos.ocr 任务显然用于将图像中的文字转换为文本,既用于选择,也用于 Spotlight。

但是 com.apple.mediaanalysisd.photosanalysis 和 com.apple.mediaanalysisd.photos.maintenance 所做的全部工作仍然未知。

每个 com.apple.xpc.activity 项的“ExpectedDuration”字段是任务运行的时间,以秒为单位。所以“3600”将是 60 分钟 - 一小时。

“优先级”和“CPUIntensive”字段也很有趣。目前尚不清楚将 CPUIntensive 字段设置为 NO 会对系统性能产生什么影响,而且关于它的 Apple 文档也很少。

“间隔”字段是进程启动之间的时间,也以秒为单位。对于 com.apple.mediaanalysisd.photosanalysis,它被设置为 7200——这意味着 120 分钟。

com.apple.mediaanalysisd.photos.maintenance 服务的间隔字段默认设置为 86400,这意味着它每 24 小时运行一次。

还有一些字段表示任务是否重复、是否在屏保期间运行以及是否在PowerNap期间运行。

最后的想法和附加信息

macOS 的大部分守护进程架构都由名为launchd 的后台守护进程运行,它管理守护进程的启动、运行和退出。您可以使用手册页了解有关在终端中启动的更多信息:

man launchd并按下Return。

还有另一个终端命令 launchctl,它与 launchd 交互以控制守护进程和后台进程。它也有一个使用手册页和更多信息。

在终端中,您还可以通过键入top命令查看 Mac 上所有正在运行的进程(应用程序和守护程序):

top

并按下Return。

一种更简单、更简洁的方法是使用 Apple 的 /Applications/Utilities/Activity Monitor 应用程序。在其搜索字段中键入“媒体”将显示媒体分析的用法:

如何阻止mediaanalysisd在macOS中占用你的CPU

如果您在活动监视器中双击一个进程的名称,您将看到一个窗口,其中包含有关该进程的更多详细信息:

如何阻止mediaanalysisd在macOS中占用你的CPU

在打开文件和端口选项卡下,我们还可以看到更多关于 mediaanalysisd 与文件系统交互的位置。我们还看到它正在使用其他几个 Apple 框架:

  1. CoreNLP.framework
  2. DataDetectorsCore.framework
  3. Lexicon.framework
  4. MetalPerformanceShaders.framework

我们还从这个日志中了解到,系统中还有另一个神秘的 Apple 守护进程:analyticsd。有一个 analyticsd 手册页,但信息很少,只是说它用于“诊断”。

THE END