Ubuntu 上用于 locate/updatedb 的数据库在哪里?

Wil*_*ill 5 locate updatedb

我一直在阅读有关 locate 命令的信息,我使用的教程说 /var/log/updatedb 是 updatedb 所在的位置。它在 ubuntu (xubuntu) 上不存在,而且原则上它甚至似乎无法定位(具有讽刺意味的是)。这就是我为尝试找到它所做的:

[HOST]:~$ sudo find / -name updatedb
[sudo] password for [USERNAME]:
find: ‘/run/user/1000/gvfs’: Permission denied
/etc/alternatives/updatedb
/usr/bin/updatedb
Run Code Online (Sandbox Code Playgroud)

如果我查看 /usr/bin 和 long-list updatedb,它会链接到 /etc/alternatives/updatedb。

如果我查看 /etc/alternatives

[HOST]:/usr/bin$ cd /etc/alternatives
[HOST]:/etc/alternatives$ ls -l updatedb
lrwxrwxrwx 1 root root 25 Jul 15 02:35 updatedb -> /usr/bin/updatedb.mlocate
Run Code Online (Sandbox Code Playgroud)

你得到了上面指向 /usr/bin/updatedb.mlocate 的符号链接

[HOST]:/usr/bin$ ls -l updatedb.mlocate
-rwxr-xr-x 1 root root 43768 Nov 18 2014 updatedb.mlocate

[HOST]:/usr/bin$ file updatedb.mlocate
updatedb.mlocate: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=85d4fb92c2e099510893b0c2eccb13d49943e81e, stripped
Run Code Online (Sandbox Code Playgroud)

然后我在 ubuntu 上阅读了这个链接:

Ubuntu 手册页:updatedb - 更新 mlocate 的数据库

这表示数据库在 /var/lib/mlocate.db 中,但这(就在下面)是我得到的,当在文本编辑器中打开时,消息是数据不可读:

[HOST]:/var/lib/mlocate$ ls
mlocate.db
[HOST]:/var/lib/mlocate$ emacs mlocate.db
[HOST]:/var/lib/mlocate$ file mlocate.db
mlocate.db: regular file, no read permission
[HOST]:/var/lib/mlocate$ ls -l mlocate.db
-rw-r----- 1 root mlocate 5291101 Aug 1 08:45 mlocate.db
[HOST]:/var/lib/mlocate$
Run Code Online (Sandbox Code Playgroud)

我希望我只是有一个概念上的误解,但会很感激任何可以帮助我了解在哪里可以找到数据库的评论。

use*_*274 6

您拥有正确的文件,但由于两个相关原因,数据库无法读取:

  1. 您无权直接访问它。
    这可以克服sudo emacs mlocate.db

  2. 它不是文本文件,因此在文本编辑器中打开它几乎没有什么用处。可以使用文本编辑器查看和编辑它,但最有可能的结果是数据库损坏。使用适当的工具阅读或修改mlocate.db:updatedblocate