파일이 실제로 존재하는지 확인한 후 존재하지 않는 경우 어떻게 이런 일이 발생할 수 있습니까?

파일이 실제로 존재하는지 확인한 후 존재하지 않는 경우 어떻게 이런 일이 발생할 수 있습니까?

두 대의 서버에서 잘 실행되던 쉘 스크립트가 있는데, 한 서버에서는 여전히 작동하는 것처럼 보였지만 다른 서버에서는 하루에 여러 번 실패하기 시작했습니다(한 시간에 한 번 실행되고 매우 불규칙적으로 2~8회 실패했습니다).

로그에는 존재하지 않는 파일을 이동하려고 했기 때문에 실패했다고 표시됩니다. 더 많이 디버깅할 때 파일을 이동하기 전에 파일이 존재하는지 확인하여 스크립트를 안정화할 수 있다고 생각했기 때문에 이제 다음이 포함됩니다.

[ -f .sha1sums.txt ] || exit 0;
mv .sha1sums.txt sha1sums.txt

그러나 여전히 매일 여러 번 실패하며 다음과 같이 기록합니다.

mv: cannot stat '.sha1sums.txt': No such file or directory

(대본에 이상한 문자가 있는지 확인했는데 전혀 없었습니다)

어떻게 이런 일이 발생했는지에 대한 최선의 추측은 현재 다른 것과 경쟁하여 파일을 삭제하고 있지만 그게 무엇인지 알 수 없어서 다른 설명(또는 오타 찾기)을 찾고 있으며 여기에 여러분이 있기를 바랍니다. 들어올 수 있습니다.

.sha1sums.txt(PS 빌드 명령은 이를 표시하기 위해 6일 전에 디버그 출력을 추가한 이후로 실패하지 않았습니다.)

관련 정보