Linux 命令(93)—— updatedb 命令

  • 2019 年 11 月 13 日
  • 笔记

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/K346K346/article/details/103028183

1.命令简介

updatedb 命令用于更新 locate 命令使用的数据库。本文介绍的是 GNU 版本的 updatedb,其它版本的选项会有所不同。

updatedb 作用的数据库名称由配置文件(一般为 /etc/updatedb.conf)或命令行参数确定(一般为 /var/lib/mlocate/mlocate.db),由系统每日执行 updatedb 更新一次,更新脚本一般为 /etc/cron.daily/mlocate,在配置文件 /etc/anacrontab 中被调用,由 anacron 每天运行一次。

anacron 是如何被启动的呢?守护进程 cron 会运行 /etc/cron.d/0hourly,在 /etc/cron.d/0hourly 文件里,有一条 cron 任务是这样的:

01 * * * * root run-parts /etc/cron.hourly

这条 cron 任务会运行 /etc/cron.hourly 目录下的所有脚本,其中有一个名为 0anacron 的脚本,该脚本则会在合适的时间运行 anacron,anacron 则会检查 /etc/anacrontab,在合适的时间分别运行 /etc/cron.daily,/etc/cron.weekly,/etc/cron.monthly 目录下的脚本。

2.命令格式

ps [options]

3.选项说明

--localpaths='PATH1 PATH2...'  	将本地目录而非网络目录放入数据库。默认为 /  --netpaths='PATH1 PATH2...'  	将网络(NFS、AFS、RFS 等)目录放入数据库。环境变量 NETPATHS 也设置这个值。默认是没有的  --prunepaths='PATH1 PATH2...'  	指定不加入数据库的目录。可以由环境变量 PRUNEPATHS 指定,默认为 /tmp /usr/tmp /var/tmp /afs  --prunefs='PATH...'  	指定不能放到数据库中的文件系统。环境变量 PRUNEFS 也设置这个值。默认是 nfs NFS proc  --output=DBFILE  	指定输出的数据库  --localuser=USER  	指定搜索非网络目录的用户,默认为当前用户。可以使用环境变量 LOCALUSER 来设置  --netuser=USER  	指定搜索网络用户的用户,默认为 daemon。 可以使用环境变量 NETUSER 来设置  --dbformat=F  	指定数据库的格式,默认为 LOCATE02。另外,还支持 slocate 格式。当使用slocate格式时,生成的数据库被标记为安全级别 1。如果你想建一个系统范围的 slocate 数据库,以 root 运行 updatedb  --version  	显示版本信息并退出  --help  	显示帮助信息并退出

4.常用示例

(1)更新默认数据库。

updatedb

(2)指定目录生成数据库。

updatedb --localpaths='/root' --output=homelocate.db

注意,第一次运行 updatedb 时,由于新创建目录下所有文件的信息的数据会比较慢。第二次使用 updatedb 时,仅执行数据库的更新操作,会比较快。


参考文献

[1] updatedb manual [2] 详解:(cron , crontab , anacron)