# 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 中配置的一条 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.命令格式

updatedb [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 时,仅执行数据库的更新操作,会比较快。


# 参考文献

updatedb(1) - Linux manual page - man7.org (opens new window)

详解:(cron , crontab , anacron) (opens new window)

Last Updated: 5/17/2024, 1:47:36 AM