Linux 的定位命令返回已删除文件的路径

Linux's locate command returning the path of a deleted file

我正在编写一个 bash shell 脚本,它使用以下命令删除文件

rm abc.xsl

我处理了获取提示并提供所需的 'y' 或 'n' 输入的情况。

为了验证文件是否已被删除,我按以下方式通过 运行 locate 命令进行验证

locate */abc.xsl

注意:所需文件存在于特定目录中,因此在我的情况下,此特定命令没有给我任何其他文件的地址

我注意到尽管文件被删除了,locate 命令仍然反映了被删除文件的路径。

我通过手动执行每个必需的命令来调试问题

财政年度

admin@sharad-server$ pwd
/usr/local/myserver/myapplication/lib
admin@sharad-server$ rm abc.xsl
rm: remove write-protected regular file 'abc.xsl'? y
admin@sharad-server$ locate */abc.xsl
/usr/local/myserver/myapplication/lib/abc.xsl

文件被删除,因为我执行ls命令时没有反映出来,还有如下cat命令

admin@sharad-server$ cat /usr/local/myserver/myapplication/lib/abc.xsl
cat: /usr/local/myserver/myapplication/lib/abc.xsl: No such file or directory

FYR 我的应用程序部署在 GCP 上,我的服务器平台详细信息如下:

admin@sharad-server$ uname -a
Linux sharad-server 3.10.0-1127.8.2.el7.x86_64 #1 SMP Tue May 12 16:57:42 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

所有这些命令以独立方式执行的 shell 的详细信息如下:

admin@sharad-server$ ps -p $$
  PID TTY          TIME CMD
32296 pts/0    00:00:00 bash

为什么定位命令仍然反映已删除文件的路径?

更新:

根据其中一项建议,我也尝试了 updatedb 命令,但它给了我一个错误。

admin@sharad-server$ updatedb
updatedb: can not open a temporary file for `/var/lib/mlocate/mlocate.db'

最终更新:

updatedb 命令与 root 用户一起工作,并成功更新了 locate 命令的功能。

出于性能原因,Locate 使用存储所有文件树结构的索引来查找内容... 此文件需要使用命令 updatedb #root permision needed 更新。 如果您想查找执行“实时分析”的文件或目录,您需要使用 find。