Linux는 내가 디렉토리에 들어갈 때까지 파일을 볼 수 없습니다.

Linux는 내가 디렉토리에 들어갈 때까지 파일을 볼 수 없습니다.

매우 이상한 문제가 있습니다. 실행되는 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캐시가 유효한 상태로 유지되는 시간을 줄이려면 마운트에서 옵션을 꺼보세요 .

관련 정보