我们在做文件系统存储数据时,测试环境,创建和删除大量文件或文件夹,结果updatedb进程就跳出来更新文件索引节点inode,之前没有注意,后来发现updatedb进程,正好我们的磁盘索引节点inode满了,不能创建文件和文件夹了,找原因的时候,发现了updatedb进程,所以写出来,供以后查看。
一,经过查找资料发现,updatedb是结合locate查找命令来做数据库索引的更新。
功能简述locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的索引数据库,之后当寻找时就只需查询这个索引数据库而不必实际深入档案系统之中了。
Locate因为是只去检索索引数据库所以在比find全盘检索要快非常多。
原理:从后台数据库中进行文件名搜索,不会遍寻整个系统。所以速度较快。缺点也是只搜索文件名。
在一般的 distribution 之中数据库的建立都被放在 crontab 中自动执行。由于locate使用的数据库是通过crondaemon周期性建立来更新的。一般周期是一周更新一次所以有在近今天内新建的文件会查找不到或者是查找到已经删除了的文件。那么我们可以通过update db命令手动更新一下或者自己再重新调整更新周期。
locate命令用于查找文件, 它比find命令的搜索速度快, 它需要一个数据库, 这个数据库由每天的例行工作(crontab)程序来建立. 当们建立好这个数据库后, 就可以方便地来搜寻所需文件了.即先运行updatedb(无论在那个目录中均可, 可以放在crontab中)后在/var/lib/slocate/下生成slocate.db数据库即可快速查找.
安装
yum install mlocate
locate命令的后台数据库
/var/lib/mlocate
在不同版本中可能是不同的名字,比如slocate
数据库更新的配置文件
/etc/updatedb.conf
(可以配置搜索限制条件以及是否开启限制,默认开启)
命令
locate 文件名 //查找文件位置
updatedb //更新数据库(数据库默认一天更新一次)
- 1
- 2
更新DB(updatedb)需要用root权限,
另外默认不搜索的目录等设置参考/etc/updatedb.conf
,
默认etc配置文件规定不搜索tmp、cache、media等目录 以及各种文件系统,包括iso9660 cifs ··