2017-11-08 17 views
0

자산 디렉토리가있는 웹 사이트가 있습니다. 때로는 전체 폴더를 삭제해야하며 이전에는 AWS에서 EBS를 사용하여 EC2를 저장소에 저장 했으므로 제대로 작동했습니다.NFS 업그레이드 후 디렉토리가 비어 있지 않아서 rmdir이 실패 함

이제 여러 인스턴스에 걸쳐 자산을 공유하도록 EFS를 테스트하고 있습니다. 파일은 그것이 디렉토리를 말하는 경고를 발생 디렉토리를 제거하기 위해가는 그러나 때 제거됩니다 비어되지 않습니다 :

ERROR [주의] : RMDIR (/ 경로 /) : 비어 있지 않은 디렉토리

파일 시스템을 보면 디렉터리가 비어 있으므로 일부 지연이 있다고 가정 할 수 있습니다. 나는 수면 기능을 테스트로 수정했는지 알아보기 위해 잠자기 기능을 넣었지만 그렇지 않습니다.

디렉터리에 대한 사용 권한이 올바른 것으로 보이며 파일을 저장/삭제하는 데 문제가 없습니다.

rm -rf 명령을 실행하는 유일한 방법은 무엇입니까? 아래의 삭제 작업을 수행하는 코드는 다음과 같습니다.

public function delTree($dir) { 
    $files = array_diff(scandir($dir), array('.','..')); 
    foreach ($files as $file) { 
     (is_dir("$dir/$file")) ? $this->delTree($dir . $file . "/") : unlink("$dir/$file"); 
    } 
    return rmdir($dir); 
} 
+0

도트 파일 ('ls -la')이 없음을 확인 했습니까? EFS 파일 시스템이 "범용"입니까, "최대 I/O입니까?" –

+0

맙소사, 점들, 일반적인 목적. – Rudiger

답변

1

대부분의 경우 다른 프로세스가 하나 이상의 파일에 잠금을 보유하고 있음을 의미합니다. 파일이 제대로 닫히지 않는 소프트웨어 버그 일 수 있습니다.

EBS에서는 작동하지만 NFS에서는 작동하지 않는 이유는 삭제 된 파일을 처리하는 방법의 차이입니다.

파일 시스템에서 열려있는 파일을 알 수있는 소프트웨어 도구가 있습니다. 이러한 도구 중 하나를 사용하여 현재 상황을 파악하십시오. 일반적으로 열려있는 파일이있는 프로세스를 볼 수도 있습니다.

rm -rf가 작동하지 않을 가능성이 높습니다. -f 옵션은 "강제"입니다. 이는 읽기 전용 파일에 대한 사용 권한을 변경하여 삭제할 수 있음을 의미합니다. rm은 파일 시스템 잠금을 변경/제거 할 수 없습니다.