Linux 在我 ls 进入该目录之前看不到文件

Linux 在我 ls 进入该目录之前看不到文件

我有一个非常奇怪的问题。我有一个运行的 php 脚本,提交一个要运行的子进程,并通过检查 OUTFILE.end 文件是否出现来等待其完成。问题是文件出现了,但 php 脚本看不到该文件。我追踪到这是一个 Linux 问题,因为如果我使用命令行检查,Linux 就看不到它。

[katelyn@katelyn data]$ ls ./files/OUTFILE.end
ls: cannot access ./files/OUTFILE.end: No such file or directory

我知道 OUTFILE.end 文件在那里,因为子作业停止运行。当我第二次ls进入该目录时,该文件就会出现。

[katelyn@katelyn data]$ ls -l ./files/
total 4
-rw-rw-r--. 1 katelyn katelyn  0 Sep 10 16:30 OUTFILE.end
-rw-rw-r--. 1 katelyn katelyn 19 Sep 10 16:30 OUTFILE.txt
[katelyn@katelyn data]$ ls ./files/OUTFILE.end
./files/OUTFILE.end

我运行的是 CentOS 6.5 版本,./files/ 目录实际上是指向另一个文件夹的符号链接,该文件夹恰好位于 Lustre 分布式文件系统上。

答案1

这与属性缓存有关。 NFS 客户端不希望每次检查都发送数据包。它假设在短时间内它可以回答有关其缓存中的各个文件的问题。但是在您的情况下,缓存不再有效。

缓存不响应目录查找。相反,它实际上通过网络发送 READDIR 或 READDIR+ 并更新缓存。

尝试关闭actimeo装载上的选项以减少缓存保持有效的时间。

相关内容