为什么“locate”找不到“/run”目录中的文件?

为什么“locate”找不到“/run”目录中的文件?

命令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"被排除/runupdatedb指数化之外。


类似问题:

相关内容