mkdir은 최근에 디렉토리에 액세스했는지 여부에 따라 다른 오류(권한 거부 및 파일 존재)를 표시합니다.

mkdir은 최근에 디렉토리에 액세스했는지 여부에 따라 다른 오류(권한 거부 및 파일 존재)를 표시합니다.

질문

먼저 새 워크스테이션에 로그인합니다.

myAcct@ws5: mkdir /users/adminAcct/foo/parentDir/childDir
mkdir: cannot create directory ‘/users/adminAcct/foo/parentDir/childDir’: Permission denied

Permission deniedchildDir이 존재하는데도 오류가 발생합니다.

childDir에 액세스하면 이 오류가 변경됩니다. iPython을 사용 os.path.isdir()하거나 쉘을 사용하여 이 작업을 수행할 수 있습니다 ls.

myAcct@ws5: ls /users/adminAcct/foo/parentDir/childDir
file.cfg
myAcct@ws5: mkdir /users/adminAcct/foo/parentDir/childDir
mkdir: cannot create directory ‘/users/adminAcct/foo/parentDir/childDir’: File exists

나는 항상 "파일 존재" 오류를 반환할 수 있기를 원합니다.

배경

--x상위 디렉토리에 대한 그룹 권한이 있습니다 /users/adminAcct/foo/parentDir. 하위 디렉터리가 /users/adminAcct/foo/parentDir/childDir존재하며 r-x해당 디렉터리에 대한 그룹 권한이 있습니다. 이것은 원래 Python의 문제였지만 셸에서 다시 만들 수 있었습니다. 저는 NFS를 통해 마운트된 홈 디렉터리가 있는 클러스터의 일부인 CentOS 6 워크스테이션을 사용하고 있습니다. 이 /users디렉토리는 /etc/fstab옵션으로 찾아 설치됩니다 (rw,vers=3,hard,intr,addr=<some IP addr>). 커널은Linux ws5.MyCompany.com 2.6.32-431.17.1.el6.x86_64 #1 SMP Wed May 7 23:32:49 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

문맥

mkdir은 하위 디렉토리에 액세스한 후에도 잠시 동안 계속해서 오류를 반환합니다 File exists. 잠시 후 mkdir이 Permission denied오류를 다시 반환합니다. 이로 인해 이러한 워크스테이션에서 /users/adminAcct/foo/parentDir/childDirAirflow CeleryExecutor 작업자를 시작하고 실행할 때 간헐적으로 문제가 발생합니다 AIRFLOW_HOME. 언제 이런 문제가 다시 발생할지 예측할 수 없습니다.

답변1

벽시계 기반 시간 초과가 있는 NFS 클라이언트 캐시 속성입니다.

이렇게 하면 성능이 향상되지만 경우에 따라 "약간 잘못된" 결과가 나타날 수 있습니다. 클라이언트 작동 방식의 특성이 파일 존재 등에 대한 표준 UNIX 보증을 항상 만족시키는 것은 아닙니다.

이 문제를 완화하는 한 가지 방법은 클라이언트 측 캐싱을 비활성화 noac하거나( ) 디렉터리 항목 캐싱을 비활성화하는 것입니다( lookupcache=none).https://linux.die.net/man/5/nfs

관련 정보