hug*_*omg 25 performance updatedb
通常,当我的程序进行全盘扫描并检查系统中的所有文件时,它们需要很长时间才能运行。相比之下,为什么updatedb 运行得如此之快?
Ste*_*itt 23
答案取决于版本locate你使用,但有一个公平的机会是mlocate,他的updatedb奔驰,避免做整盘扫描:
mlocate 是一个 locate/updatedb 实现。'm' 代表“合并”:updatedb 重用现有数据库以避免重新读取大部分文件系统,这使得 updatedb 更快并且不会破坏系统缓存。
(数据库存储每个目录的时间戳,ctime或mtime,以较新者为准。)
像 , 的大多数实现一样updatedb,mlocate也会跳过它配置为忽略的文件系统和路径。默认有没有在mlocate的情况下,但分布通常提供一个基本updatedb.conf而忽略网络文件系统,虚拟文件系统等(详见Debian的配置文件例如,这是在Debian中的标准实践,所以GNU的updatedb被类似地配置)。
除了检查修改时间之外,mlocate还会忽略文件系统的某些子树,这些子树具有许多无趣或可能重复的文件,如 /etc/updatedb.conf 中所指定(并在man updatedb.conf 中描述):
| 归档时间: |
|
| 查看次数: |
3114 次 |
| 最近记录: |