我正在写一个 bash s 脚本,它使用以下命令删除一个文件
rm abc.xsl
我处理了获得提示并提供所需的 'y' 或 'n' 输入的情况。
为了验证文件是否已被删除,我通过以下方式运行 locate 命令来验证
locate */abc.xsl
注意:所需的文件存在于一个特定的目录,所以在我的情况下,这个特定的命令没有给我任何其他文件的地址
我注意到,尽管文件被删除,locate 命令仍然反映了已删除文件的路径。
我通过手动执行每个必需的命令来调试问题
FYR
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
以方式执行所有这些命令的 s 的详细信息如下:
admin@sharad-server$ ps -p $$
PID TTY TIME CMD
32296 pts/0 00:00:00 bash
为什么 locate 命令仍然反映已删除文件的路径?
更新:
根据建议之一,我尝试了 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。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(72条)