Linux updatedb命令介绍
updatedb是一个用来创建或更新locate命令所需的文件名数据库的命令。locate命令可以快速地在数据库中搜索文件或目录的名称。updatedb命令通常由cron定时任务每天运行一次,以更新默认的数据库。如果数据库已经存在,updatedb命令会重用其中的数据,避免重新读取没有变化的目录。updatedb命令是GNU findutils软件包的一部分¹。
Linux updatedb命令适用的Linux版本
updatedb命令在大多数Linux发行版中都是可用的,但是不同的发行版可能使用不同的数据库格式和配置文件。例如,Debian和Ubuntu使用mlocate²,而Red Hat和Fedora使用slocate³。这些数据库格式之间的主要区别是,mlocate支持多用户环境,而slocate只支持单用户环境。mlocate和slocate的命令选项和语法基本相同,但是配置文件的位置和内容可能有所不同。如果你的系统没有安装updatedb命令,你可以使用以下命令来安装它:
- Debian/Ubuntu:
sudo apt install mlocate
- Red Hat/Fedora:
sudo yum install slocate
- CentOS 7:
sudo yum install mlocate
- CentOS 8:
sudo dnf install mlocate
Linux updatedb命令的基本语法
updatedb命令的基本语法格式如下:
updatedb [options]
Linux updatedb命令的常用选项说明
updatedb命令的常用选项如下表所示:
选项 | 说明 |
---|---|
-o, --output FILE | 指定要创建或更新的数据库文件,如果不指定,默认为系统相关的位置。在Debian/Ubuntu中,默认为/var/cache/locate/locatedb。 |
-U, --database-root PATH | 指定要搜索的根目录,如果不指定,默认为/。 |
-l, --localuser USER | 指定用来搜索非网络目录的用户,使用su命令切换。如果不指定,默认为当前用户。 |
-n, --netuser USER | 指定用来搜索网络目录的用户,使用su命令切换。如果不指定,默认为当前用户。 |
-e, --existing | 只将存在的文件和目录加入到数据库中,忽略不存在的文件和目录。 |
-f, --findoptions OPTIONS | 指定传递给find命令的全局选项,用来搜索文件和目录。 |
-p, --prunepaths PATHS | 指定要从数据库中排除的目录,用空格分隔。如果目录结尾有斜杠,需要去掉,否则updatedb命令无法识别。 |
-P, --prunefs FSTYPES | 指定要从数据库中排除的文件系统类型,用空格分隔。 |
-v, --verbose | 显示执行的详细过程。 |
-h, --help | 显示帮助信息。 |
-V, --version | 显示版本信息。 |
Linux updatedb命令的实例
以下是一些updatedb命令的常见用法实例:
- 创建或更新默认的数据库文件:
[linux@bashcommandnotfound.cn ~]$ sudo updatedb
- 创建或更新指定的数据库文件:
[linux@bashcommandnotfound.cn ~]$ sudo updatedb -o mydb
- 只搜索/home目录,并将结果写入到homedb文件中:
[linux@bashcommandnotfound.cn ~]$ sudo updatedb -U /home -o homedb
- 以root用户身份搜索非网络目录,以nobody用户身份搜索网络目录:
[linux@bashcommandnotfound.cn ~]$ sudo updatedb -l root -n nobody
- 只将存在的文件和目录加入到数据库中:
[linux@bashcommandnotfound.cn ~]$ sudo updatedb -e
- 指定传递给find命令的选项,例如只搜索可读的文件:
[linux@bashcommandnotfound.cn ~]$ sudo updatedb -f '-readable'
- 从数据库中排除/tmp和/var/tmp目录:
[linux@bashcommandnotfound.cn ~]$ sudo updatedb -p '/tmp /var/tmp'
- 从数据库中排除nfs和tmpfs文件系统:
[linux@bashcommandnotfound.cn ~]$ sudo updatedb -P 'nfs tmpfs'
- 显示执行的详细过程:
[linux@bashcommandnotfound.cn ~]$ sudo updatedb -v
Linux updatedb命令的注意事项
- updatedb命令需要root权限才能执行,否则会提示Permission denied错误。
- updatedb命令的执行时间取决于系统中的文件和目录的数量,通常需要几分钟到几十分钟不等。
- updatedb命令创建或更新的数据库文件只能被locate命令读取,不能直接查看或编辑。
- updatedb命令的配置文件的位置和内容可能因不同的发行版而异,一般在/etc目录下,例如/etc/updatedb.conf或/etc/updatedb.conf.d目录。
- 如果你的系统没有安装updatedb命令,你可能会遇到bash: updatedb: command not found的错误,你可以根据你的系统类型使用相应的命令来安装它。
评论区