企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# Mac OS X的Spotlight综述 ### 关于Spotlight的简述     Spotlight是苹果OS X系统里的亮点之一,它的快速查找,是Windows等其它系统所难望其项背的。特具有如下特点: -     它很快,相当快而且聪明。 -     它存在好多地方,Finder,System menu, Open和Save对话框, Mail等等。 -     它会自动为安装的磁盘建立/更新索引,除了网络和DVD磁盘等. -     它不仅搜索普通文件,还有联系人,email,iTunes里的音乐,iPhoto里的照片,日历中的事件,系统文件等等。 -     它不会做的:隐藏文件(.hidden),不可见文件(invisible),在隐藏或者不可见文件夹里的文件等。 -     除了对所有用户目录建立索引,还对/Applications,/Library/PreerencePanes /System/Library/PreerencePanes启作用 -     在Finder里面,Command+F来打开一个所有窗口 -     可以对各种文件的多种属性进行搜索,比如File lable,甚至是System Files等等。 -     相关的系统进程: mds, mdimport, mdworker. -     即便是安全模式,它也是可以使用的。 -     它支持插件,适合的插件用来搜索特定的数据库里的项目。 -     随着文件的增多,它占用更多的磁盘空间,不过用户觉察不到。 -     其它的选择,Find Any File, EasyFind, Find File等等 ### 基本使用: - Spotlight: 在系统菜单栏中,也就是屏幕的右上角的放大镜按钮,点击它,或者使用快捷键(Command+Sapce),在下拉的Spotlight蓝色搜索栏中输入要查找的特征,它就会在下方列出相关的项目。我常用的是,输入一个程序的名字,比如是计算器,我只输入Cal,计算器就会称谓第一个备选者,我按Enter回车,就可以启动计算器程序了。 - Finder中: 还可以在Finder窗口中的工具栏的最右边,也是搜索栏,输入查找特征,系统也会随时列出相关的项目。搜索时,文件列表区域的顶端,会出现一个Search的表头,可以方便切换搜索的范围-当前电脑还是启动磁盘,和查找根据-是查找内容相关还是单单文件名相关。和Spotlight不同的是,你可以进行高级查找,也就是添加/使用各种的搜索条件。只要点击Search条的最有边的“+”小按钮,下方又出现一条,这里你可以添加一个一个的条件,最左边是条件的类型,最常用的是文件类型,修改时间,创建时间,上次打开时间,后面就是具体条件,随时输入,下方列表随时更新,非常方便。 ![](https://box.kancloud.cn/2016-04-19_57158f4eed7a2.gif) - Save/Open 还有在你保存/打开文件的时候,也可以使用上面Finder的搜索方法。具体操作和上边类似。 - 改变搜索结果顺序: 进入System Preerences的Spotlight,拖动每一项就可以改变顺序,去除选择的话,这一类的结果就不会出现在搜索结果中。 ### 基本的排错:     在一般的情况下,它工作得相当得文件,但是在升级安装或者是被自己多次修改过的系统中,会出现Spotlight不工作的问题。解决问题可以遵循下面的步骤来尝试,尝试每一步之后,都需要等待一段时间,可能时数秒,也可能是一两分钟不等,过长的时间等待一般不需要。     1: 重新启动电脑         这个总是第一个想到的     2: 删除com.apple.spotlight.plist文件         这个文件在挡墙用户个人文件家的~/Library/Preferences文件夹中     3: 进入在System Preferences中的Spotligh的Privacy中,把系统磁盘添加到列表中,等候几秒中,然后再从中删除。一般的情况到此为止,都可以解决了。     4: 杀掉SystemUIServer进程         进入在Utilities文件夹中的Activity Monitor中,找到并选择"SystemUIServer",点"Quit Process"。等一会儿,系统菜单条会重新出现。     5: 命令行         sudo find / -iname '.Spotlight-V100' -type d -maxdepth 3 -print0 | xargs -0 -t -n1 sudo rm -rf         sudo mdutil -E /     6: 再有就是详细阅读后面的解读,自己尝试各个方式。 ### 停止它建立索引:         虽然它很好用也有很多人喜欢它,你依然可能出于某种想法希望停止它,无论是临时的还是永久的。比如有的嫌它太占用资源,导致系统速度下降;有的说它崩溃,还不如没有。还有一种情况,可能你真的希望临时禁止它,或者禁止部分;还有的时候Spotlight可能产生安全隐患,一个不希望被其它用户搜索的,却可以被搜索,虽然可能不能存取,但是也是不安全(多数情况可能是使用习惯不好造成的)。总之,我们希望用户自己控制它的打开,部分打开,或者完全禁止。 ### 命令行: 1. hostconfig 如果你运行的是Mac OS X 10.5雪豹以前的系统,那么有一种方法可以禁止它。就是编辑/etc/hostconfig里面,修改SPOTLIGHT=-No-. 重新打开也简单,改成默认的-YES-,重新启动系统之后就可以。不过这个方法需要你有管理员权限。 1. 使用GUI 在System Preferences里的Spotlight,在Privacy标签中,把本机的硬盘符,拖到列表中,系统提示就确认,之后,Spotlight就不管用了。 ***版权信息**: 本着开放交流的原则欢迎转载,除非明确声明"谢绝转载"等字样. **所有文章/图片/代码(除转载和翻译),版权均属文章作者**. 转载请遵守下面规则:  1)保持文章的完整性; 2)不得以盈利为目的; 3)完整标注文章作者[Tony Liu@[中国在线教育](http://blog.csdn.net/afatgoat)]和文章中标注的所有版权信息。 其它事宜,如:需要商业用途或以盈利为目的的、或者部分转载的等等,请与本作者联系: TonyLiu2CA@yahoo.com* 如果禁止了当前的系统硬盘,Spotlight和Finder中都无法使用搜索功能了,在搜索栏中无法输入。 当然可以禁止查找特定的目录,同样的方法,拖动到列表里就好。一旦一个目录或者磁盘被拖放在里边,Spolight会立刻停止对他建立索引,而且也无法再从Finder找到里面的文件,虽然已经储存的索引还依然存在于系统中。 一旦一个目录被添加到Privacy里面,在搜索里面就不会出现在搜索结果中。 在以前的系统里可能会出现问题,比如Spotlight正在建立索引的时候,它可能产生一个mds-crash-state的文件,这样即使你把它从Privacy里面去除,依然无法对他重新建立索引。解决的办法是,或者卸载这个磁盘后再安装上,或者重新启动系统,或者删除这个文件(.Spotlight-V100目录中),或者运行重新索引命令: sudo mdutil -E /path_to_volume 要想打开,就把它从列表中删除,删除后,Spotlight会自动更新,这个速度根据你的系统和文件多少等,可能会持续数分钟,或者更长。 1. sudo mdutil -i off /path_to_volume 这个命令可以应用于一个磁盘(分区),不能应用于一个目录。而这个被禁止的磁盘不会出现在Spotlight的Privacy列表里面。 如果是sudo mdutil -i off / 也就是对整个启动磁盘禁止索引,运行这个命令的结果:系统不会启动mds来对磁盘进行后台索引,但是在Finder中依然可以使用Find功能,只不过这个功能就如同Windows里面的普通搜索类似了,速度慢,因为没有了可以使用的数据索引,和命令行下的Find命令类似,只不过它不查找程序或者各种包里面的内容。比较上面在GUI下的Pravicy的禁止,里面有些差异。这个功能有的时候可能还是用得到的,比如你不希望系统随时建立索引,但是同时还要保留在Finder里面查找文件的功能。 ### 其它方式:      使用第三方软件,比如Onyx/QuickSilver等 ### 命令行和GUI的关系:     在Mac OS X 10.6以前的版本,命令行和System Preferences里的Spotlight是不太兼容的两个部分。不过这种情况已经得到改善     比如,在Spotlight里面把一个目录添加到Privacy里面了,命令行依然可以运行 -i off或者-i on,但是在雪豹中,已经是不行了,当你使用-i on的时候,它会提示 Indexing and searching disabled.     在比如,当你把一个目录添加到Privacy里面后,以前的版本可能不会立刻删除索引数据,而现在的版本会立刻删除。     前面也说了,在命令行禁止索引,在GUI中依然可以搜索文件。 ### 其它命令     sudo mdutil -E /     重新建立系统磁盘的索引。如果在GUI中Pravicy里面被禁止了,那么这条命令不起作用。     sudo launchctl unload /System/Library/LaunchDaemons/com.apple.metadata.mds.plist     停止mds服务。下次系统重新启动后,mds服务会重新启动。     sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist     停止mds服务。下次系统重新启动后,mds服务都不会重新启动。     sudo launchctl load /System/Library/LaunchDaemons/com.apple.metadata.mds.plist     停止之后,如果需要立刻启动mds服务,运行这个命令。   ### Under the Hood:     下面的内容千万比出于好奇尝试,只有在你真正了解下面所说的内容之后再使用,否则后果自负。     Spotlight的索引建立在,各个磁盘的目录下面的.Spotlight隐藏目录中。     在系统偏好的Spotlight的Privacy中的列表内容,存放在叫做Exclusions.plist的文件中。     而搜索结果的顺序选项,则在当前用户的的个人文件夹中的com.apple.spotlight.plist文件中定义。     对于希望不使用GUI方式操作Privacy的用户,就需要使用命令行了,下面就是一个例子。 # Start defaults delete /.Spotlight-V100/Exclusions defaults write /.Spotlight-V100/Exclusions  Exclusions -array launchctl unload /System/Library/LaunchDaemons/com.apple.metadata.mds.plist launchctl load /System/Library/LaunchDaemons/com.apple.metadata.mds.plist # End     还有一个彻底的方式: # Start     sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist     mkdir /System/Library/LaunchAgnets.backup     sudo mv /System/Library/LaunchAgnets/com.apple.metadata_mdwrite /System/Library/LaunchAgnets     cd /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Support/     tar -cvf mdworkstuff.tar ./ #(saves all md* to a tarball in case you ever want it back)     then :     rm mdworker     rm mdworker32     rm mds     rm mdwrite # End     Tony Liu in Calgary 2011, 03, 03 -18 Windchill -35