如何选择性禁用Tracker对指定目录(或目录集)的索引?
解决Tracker索引大型项目构建产物导致CPU飙升的问题
我太懂这种恼火的情况了——每次用Jekyll搭站点或者构建文档,生成几千个HTML文件刚结束,Tracker就立刻扑上来疯狂索引,CPU直接飙升,完全是做无用功!下面给你几个靠谱的方案,既能让Tracker跳过那些指定的构建目录(包括子目录),又不影响其他内容的正常索引:
方法1:用.trackerignore文件(最直观,类似.gitignore)
这个方法和Git忽略文件的逻辑一模一样,上手零成本:
- 单个项目生效:在你的项目根目录(就是包含构建目录的上层目录)新建一个
.trackerignore文件,把需要排除的构建目录写进去,比如Jekyll默认的_site目录,或者文档构建的build目录:
注意路径末尾要加_site/ docs/build//,这样表示排除整个目录(包括所有子目录和文件),如果不加的话可能会匹配同名的单个文件。 - 全局生效:如果多个项目的构建目录路径类似,或者你想统一排除某些目录,直接在用户目录下创建/编辑
~/.config/tracker/trackerignore文件,写入同样的规则就行,所有被Tracker监控的位置都会自动跳过这些目录。
方法2:通过图形界面工具修改监控规则
如果你不习惯命令行,可以用Tracker的图形配置工具:
- 打开系统设置里的“Tracker”相关面板(不同桌面环境可能叫“搜索”或“文件索引”),找到“监控位置”选项。
- 找到你要排除的构建目录,添加它到“排除列表”里;如果构建目录是某个已监控目录的子目录,直接添加排除规则比移除父目录监控更合适,这样父目录里的其他内容依然会被正常索引。
方法3:命令行配置排除规则
偏好命令行的话,可以用tracker3(旧版本可能是tracker或tracker2,先在终端输入tracker --version确认版本)来修改配置:
- 先查看当前的排除规则:
tracker3 config list | grep -i ignore - 添加要排除的目录(用绝对路径,多个目录用逗号分隔):
tracker3 config set org.freedesktop.Tracker3.Miner.Files ignore-directories "['/home/your-name/projects/my-jekyll/_site', '/home/your-name/docs/build']" - 修改完成后重启Tracker生效:
tracker3 daemon restart
不管用哪种方法,都能让Tracker彻底跳过那些构建产物目录,不会再浪费CPU去索引这些临时或无需搜索的文件,同时其他目录的索引功能完全不受影响。
内容的提问来源于stack exchange,提问作者berkes
相关产品推荐
相关产品推荐

