`rm -rf`는 원자적이지 않나요?

`rm -rf`는 원자적이지 않나요?

방금 혼란스러운 오류를 발견했습니다.

rm: cannot remove `xxx/app/cache/prod': Directory not empty

이는 다음 명령으로 인해 발생합니다.

rm -rf $cache_dir/*

이는 $cache_dir다음과 같이 정의됩니다.xxx/app/cache

그래서 나는 이것이 다음과 같이 진행된다고 생각합니다: rm나는 dir 의 모든 것을 삭제 cache/prod한 다음 cache/prod디렉터리를 삭제하려고 시도하기 전에 다른 프로그램이 그 안에 파일/디렉토리를 생성하여 rm오류를 일으켰습니다.

내 가정이 맞나요?

답변1

주어진 오류 메시지는 "디렉토리가 비어 있지 않습니다"( )입니다. 귀하의 가정이 정확하다고 생각하면 이는 프로그램이 파일을 삭제하려고 시도하기 전에 디렉터리에 파일을 생성하여 기본 예상 오류가 ENOTEMPTY경쟁 조건입니다 .rmENOTEMPTYrmdir(2)

노트:안전을 위해 디렉터리를 새 이름으로 이동하거나 이름을 바꾼 다음 이 디렉터리를 삭제할 수 있습니다.

관련 정보