# 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
- 前言
- Mac OS X:如何将个人文件夹从默认卷移到其他卷(适合OSX10.5 Leopard)
- Mac OS X:Finder菜单中的Connect to Server选项禁止和打开
- Mac OS X: 苹果机支持的分区表类型及问题解决
- Mac OS X: 偏好Preferences基础(1)
- Mac OS X: 如何变更Office for Mac的注册码
- Mac OS X: 禁止/防止网络用户复制app程序到桌面
- Mac OS X: 用户帐户的选择
- Mac OS X: 实用脚本程序(bash scripts)系列
- Mac OS X: 共享iPhoto图片
- Mac OS X: 实用脚本程序(bash scripts)系列-2
- Mac OS X: 实用脚本程序(bash scripts)系列-3
- Mac OS X: 实用脚本程序(bash scripts)系列-4
- Mac OS X: 实用脚本程序(bash scripts)系列-5
- Mac OS X: 实用脚本程序(bash scripts)系列-6
- Mac OS X:升级rsync和同步应用实例
- Mac OS X: XAMP在Mac上的实现
- Mac OS X瘦身多法
- Mac OS X 10.5快速系统部署实践-计划(2) v1
- Mac OS X 10.5快速系统部署实践-制作核心系统镜像(1) v1
- Mac OS X数据备份方案一例
- Mac OS X数据备份方案一例(2)
- Mac OS X 10.5快速系统部署实践-制作核心系统镜像(2) v1
- Mac OS X: 打印系统治疗
- Mac OS X:禁止崩溃报告
- Mac OS X:Snow Leopard的几个改动(管理员相关)
- Mac OS X排错:雪豹的最新更新Airport可能不支持无线802.11n网络
- Mac OS X:雪豹内置支持读写NTFS卷
- Mac OS X:定制生成新用户的程序包
- Mac OS X:在Windows里面使用命令行设置启动系统
- Mac OS X: 实用脚本程序(bash scripts)系列-7
- Mac OS X:一种从APP中获得PKG的方法
- Mac OS X: bash脚本实现添加无线SSID(Update2009-10-09)
- Mac OS X: 实用脚本程序(bash scripts)系列-8
- Mac OS X 10.5快速系统部署实践-制作核心系统镜像(4) v1
- Mac OS X: 彻底删除GeekTool(bash脚本)
- Mac OS X: 实用脚本程序(bash scripts)系列-9
- 把你的Leopard变成Mac OS X的系统发布服务器(1)
- 把你的Leopard变成Mac OS X的系统发布服务器(2)
- 把你的Leopard变成Mac OS X的系统发布服务器(3)
- Mac OS X: 访问控制远程CUPS服务
- Mac & Win混合平台访问和工具
- Mac OS X: DeployStudio更新v1.0rc16
- Mac: 想当Apple菜鸟不容易(1)
- Mac: 想当 Apple菜鸟不容易(2)
- Mac: 想当 Apple菜鸟不容易(3)
- Mac: 想当 Apple菜鸟不容易(4完)
- Mac电脑上处理摄像机上的存储内容
- Mac OS X: Google自动更新程序的卸载
- 雪豹系统和SMB不兼容的问题的解决汇总
- Mac OS X: 实用脚本程序(bash scripts)系列-10
- Mac OS X:MagicPrefs介绍
- Mac OS X: 系统部署后程序安装的用户提示
- Mac OS X:开启单程序模式
- Mac OS X: 在脚本里关闭Airport
- Mac笔记本电池:十点建议和其它
- Mac OS X: Launchd执行程序的一个例子
- Mac OS X:修改SMART Utility期限限制
- Mac OS X:网络用户环境个性配置实例
- Mac OS X:强制退出CD/DVD盘
- Mac OS X: launchd plist在线编辑器
- Mac OS X: 实用脚本程序(bash scripts)系列-11
- Mac OS X: 实用脚本程序(bash scripts)系列-12
- Mac: 卸载Safari 5.0.2
- Mac OS X: 实用脚本程序(bash scripts)系列-13
- Mac OS X: 文件图标制作和变更(Resource Fork)
- Mac OS X 10.6.6更新之后NTFS只读的解决
- Mac: 网络用户遇到Adobe Reader 9.x/10.x异常退出的解决
- Mac OS X: airport命令的参数
- Mac OS X的Spotlight综述
- Mac OS X:AFP和SMB共享配置详细配置
- Mac OS X:详细解读Munki和应用
- Mac OS X:显示/设置分辨率的命令(源程序)
- Mac OS X: 是否升级到Lion?
- OSX: 禁止Flash Player 10.3自动更新
- OSX脚本:禁止系统自动添加AppStore图标到用户Dock上
- 狮子GM版本的安装
- OS X Lion狮子安装盘的初步研究
- OS X Lion狮子的恢复盘的删除二法
- OSX: Finder的侧边栏(Sidebar)不显示已装载的网络共享
- OSX:隐藏文件或文件夹
- OS X: 实用脚本程序(bash scripts)系列-13
- OS X: 实用脚本程序(bash scripts)系列-14
- OSX:Lion支持登录窗口的Policy Banner
- OSX: 让狮子说中文