tux*_*xtu 20 server command-line locate
我想使用“locate”命令在我的系统中定位一个目录。我知道有一个名为“bench-repo”的目录。当我给出以下命令时,它显示以下错误:
locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory
Run Code Online (Sandbox Code Playgroud)
为什么会这样?我如何找到目录?
Zan*_*nna 28
locate( /var/lib/mlocate/mlocate.db)使用的二进制数据库由每天更新一次cron,因此locate不会找到新文件。
您可以通过首先运行来解决此问题 sudo updatedb
sudo updatedb && locate -e bench-repo
Run Code Online (Sandbox Code Playgroud)
使用该-e标志是个好主意,因此您只能找到仍然存在的文件。
哦,这是一个额外的提示 - 你可以locate通过传递给你一个详细的列表ls -l
ls -l $(locate -e bench-repo)
Run Code Online (Sandbox Code Playgroud)
通常,当您无法访问locate文件或因为最近创建(在上次数据库更新之后)或因为它不在updatedb 将要搜索其条目或匹配某些修剪规则的路径中时(见下文):
如果它是一个新文件或目录,如果您有足够的权限,您可以强制更新:
sudo updatedb
Run Code Online (Sandbox Code Playgroud)
这将更新所有且仅存在于允许路径中且不会被丢弃的文件和目录(情况 2)。
如果文件不在由 updatedb扫描的路径中,或者匹配某些排除规则,您可以修改配置文件并更新数据库:
sudo pico /etc/updatedb.conf # manual update
sudo updatedb
Run Code Online (Sandbox Code Playgroud)
实际上,您可以在配置文件中找到修剪过的文件/目录的键/etc/updatedb.conf。搜索PRUNENAMES、PRUNEPATHS或PRUNEFS,相应地进行修改,然后再次更新数据库。
locate和的一些话updatedb为了能够访问locate文件或目录,它必须实际包含在您的mlocate 数据库中,通常存储在/var/lib/mlocate/mlocate.db.
该数据库会定期更新。默认情况下,它每天更新,您可以cron在/etc/cron.daily/mlocate. 如果不存在,您可以搜索它locate mlocate | grep cron并查看它的位置和更新频率。
使用man locate和man updatedb进一步阅读。