我如何确定 mdworker
(Spotlight) 已完成第一次扫描?我基本上是在寻找小“。”的点。在聚光灯下的搜索图标将消失,您将能够执行搜索。 (显然操作系统有办法确定这一点,因为它会显示一个点,直到它准备好......)我没有看到来自 mdutil
的任何内容我在 Spotlight API 中找不到任何东西。
我目前正在使用 mdimport
强制我自己同步扫描, 但这会导致很长的延迟(从几分钟到几小时,具体取决于我在哪里搜索的积极程度)并重复 mdworker
的工作已经在做。
任何解决方案(程序化、脚本化、文档化或无文档化)在这里都是公平的。
最佳答案
我为此与 Apple 开了一个 DTS。答案是从 10.7 开始没有支持的方法来执行此操作。聚光灯搜索图标使用的“小点”由私有(private)界面控制。
我的目标是获取已安装应用程序的 list 。
我目前的解决方案是使用 fts
收集/Applications 中所有应用程序的列表。并搜索名为“.app”的东西,并在我去的时候进行修剪,这样我就不会得到子应用程序。 (使用 NSDirectoryEnumeration
会更容易,但是这段特殊的代码是在 C++ 中使用 Core Foundation 的。使用 CFURLEnumerator
会更容易,但我需要支持 10.4。所以 fts
很好。 )
扫描此列表非常快。一旦我知道盒子上的最小应用程序数量,我会将其与 system_profiler
进行比较。输出。如果 system_profiler
告诉我/Applications 中的应用程序比我知道的要少,然后我自己扫描所有捆绑包。否则,我使用 system_profiler
的输出.
这并不理想,但它是一种不错的启发式方法,“大部分”是正确的,并且可以防止应用程序的严重漏报。
关于macos - 确定 mdworker (Spotlight) 是否已完成第一次扫描,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8718155/