如何更新locate的缓存/索引?我安装了新软件包,但这些文件显然尚未编入索引。那么我必须提交哪个命令才能触发索引器?
我目前正在开发 debian jessie(测试):使用 Linux mbpc 3.13-1-amd64 #1 SMP Debian 3.13.7-1 (2014-03-25) x86_64 GNU/Linux
小智 149
命令是:
sudo updatedb
Run Code Online (Sandbox Code Playgroud)
有关man updatedb更多详细信息,请参阅。
jco*_*lum 27
在 OSX 上,这是: sudo /usr/libexec/locate.updatedb
可以链接到: sudo ln -s /usr/libexec/locate.updatedb /usr/local/bin/updatedb
必须为标准 unix 命令创建符号链接似乎很愚蠢,但确实如此。
而答案:
sudo updatedb
Run Code Online (Sandbox Code Playgroud)
从技术上讲是正确的,updatedb如果还安装了 cron 作业,单独在命令行上运行几乎从来都不是一个好主意。根据 Unix 风格,cronjob 包含锁定条款和独立updatedb命令未涵盖的任何数量的配置。
如果 locate 数据库需要经常更新,那么为特定主机确定合适的 cron 作业并手动运行它绝对值得。
根据管理员的不同,cronjob forupdatedb可能隐藏在不同的位置。因此,寻找 cron 作业的简单暴力尝试是:
( sudo crontab -l > /tmp/crontab.root;
( echo /tmp/crontab.root; ls -1d /etc/*cron* /etc/*cron*/* ) \
| tr '\n' '\0' \
| xargs -0 -r -e grep -nH -e updatedb;
rm -f /tmp/crontab.root
) 2>/dev/null
Run Code Online (Sandbox Code Playgroud)
在我的 Ubuntu 系统之一上显示以下结果:
/etc/cron.daily/mlocate:5:[ -x /usr/bin/updatedb.mlocate ] || exit 0
/etc/cron.daily/mlocate:21:flock --nonblock /run/mlocate.daily.lock $IONICE /usr/bin/updatedb.mlocate
Run Code Online (Sandbox Code Playgroud)
因此,在这种情况下更新定位数据库的正确命令是
/etc/cron.daily/mlocate:5:[ -x /usr/bin/updatedb.mlocate ] || exit 0
/etc/cron.daily/mlocate:21:flock --nonblock /run/mlocate.daily.lock $IONICE /usr/bin/updatedb.mlocate
Run Code Online (Sandbox Code Playgroud)
更系统的方法是确定提供locate和的包updatedb。
例如,在带有 apt/dpkg 包装的操作系统上,您可以找到安装了哪种风格的 locate:
sudo /etc/cron.daily/mlocate
Run Code Online (Sandbox Code Playgroud)
就我而言,它是:
mlocate: /usr/bin/updatedb.mlocate
Run Code Online (Sandbox Code Playgroud)
要查看哪个 cron 作业(如果有)负责,请运行:
dpkg -L mlocate | grep cron
Run Code Online (Sandbox Code Playgroud)
在我的情况下显示:
/etc/cron.daily
/etc/cron.daily/mlocate
Run Code Online (Sandbox Code Playgroud)
要更新数据库,请以 root 身份运行 cron 作业:
dpkg -S locate | grep /bin/
Run Code Online (Sandbox Code Playgroud)
如果没有 cronjob,并且 updatedb 本身不起作用,请尝试使用以下命令查找已安装的风格:
mlocate: /usr/bin/updatedb.mlocate
Run Code Online (Sandbox Code Playgroud)
返回:
/usr/bin/mlocate
/usr/bin/updatedb.mlocate
Run Code Online (Sandbox Code Playgroud)
注意:如果你不赞成这个答案,那么好,让我知道为什么业余爱好者的答案被认为更好。
| 归档时间: |
|
| 查看次数: |
139412 次 |
| 最近记录: |