![为什么“locate”找不到“/run”目录中的文件?](https://linux22.com/image/1179137/%E4%B8%BA%E4%BB%80%E4%B9%88%E2%80%9Clocate%E2%80%9D%E6%89%BE%E4%B8%8D%E5%88%B0%E2%80%9C%2Frun%E2%80%9D%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6%EF%BC%9F.png)
命令sudo find / -name "php7.2-fpm.sock"
返回/run/php/php7.2-fpm.sock
但是sudo locate php7.2-fpm.sock
是空的。
PS:sudo updatedb
之前用过。
答案1
由@WinEunuuchs2Unix(概念)和@steeldriver(技术细节)回答。
概念:
locate
可以从其索引过程中排除目录。细节:有一个“
locate
配置文件”,/etc/updatedb.conf
(手册页),您可以声明许多排除规则 — 排除的路径、文件或目录将不会被扫描updatedb
。每条规则都由一个变量声明:PRUNE_BIND_MOUNTS
:使用“YES”排除已挂载的目录 — — 因此不会扫描绑定挂载。PRUNENAMES
:排除列表目录名称。PRUNEPATHS
:排除列表路径名 目錄。PRUNEFS
:当标记为(“0”或“NO”)时使用PRUNE_BIND_MOUNTS
,它是一个列表文件系统类型, 喜欢旧/etc/mtab
系统类型被排除。
/etc/updatedb.conf
倾倒
问题中描述的问题发生在以下背景下:
PRUNE_BIND_MOUNTS="yes"
# PRUNENAMES=".git .bzr .hg .svn"
PRUNEPATHS="/tmp /var/spool /media /var/lib/os-prober /var/lib/ceph /home/.ecryptfs /var/lib/schroot"
PRUNEFS="NFS nfs nfs4 rpc_pipefs afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs devtmpfs fuse.mfs shfs sysfs cifs lustre tmpfs usbfs udf fus
e.glusterfs fuse.sshfs curlftpfs ceph fuse.ceph fuse.rozofs ecryptfs fusesmb"
因此,PRUNE_BIND_MOUNTS="yes"
被排除/run
在updatedb
指数化之外。
类似问题: