Search
Duplicate

"failed to remove ‘file’/: Device or resource busy”

Created time
2024/04/09 06:21
Last edited time
2024/04/13 11:43
Status
Done
tag

들어가기에 앞서

참고한 자료를 바탕으로 비전문가가 정리한 글이므로 오류가 있을 수 있습니다.
오류에 대한 피드백은 언제든지 환영합니다. 부디 댓글로 알려주시길 바랍니다. 감사합니다.

linux에서 rm -rf 명령어가 작동하지 않는다면?

"failed to remove ‘file’/: Device or resource busy”
특정 파일을 삭제하려고 할 때, 이런 메시지가 나오는 이유는 일반적으로 파일이나 디렉토리가 현재 사용 중이거나 접근 권한이 없어서 삭제할 수 없기 때문입니다. 이 경우에는 lsof나 fuser와 같은 도구를 사용하여 현재 작업 중인 프로세스가 있는지 확인해야 합니다.
1.
lsof (List Open Files):
lsof 명령어는 열린 파일, 디렉토리 및 네트워크 소켓과 관련된 정보를 표시합니다. 특정 파일이나 디렉토리를 사용 중인 프로세스를 확인하려면 해당 파일이나 디렉토리의 경로를 인자로 사용하면 됩니다.
lsof /path/to/directory
Shell
복사
이 명령어는 해당 디렉토리를 사용 중인 프로세스들의 목록을 보여줍니다. 여기에는 프로세스 ID (PID)와 실행 중인 프로그램 등의 정보가 포함됩니다.
lsof: WARNING: can't stat() ext4 file system /var/lib/docker/containers Output information may be incomplete.
Shell
복사
하지만, 위와 같이 경고 메시지가 나오면서 일부 파일 시스템에 대해 완전한 정보를 제공하지 못할 수도 있습니다. 저 같은 경우 도커 컨테이너의 특정 파일에 대한 정보를 보려했으나 위와 같은 메시지를 만났습니다.
그럴 경우에는 아래의 fuser 명령어를 사용하면 됩니다.
2.
fuser (File User):
fuser 명령어는 파일이나 디렉토리를 사용 중인 프로세스를 확인하는 데 사용됩니다.
fuser -v /path/to/directory
Shell
복사
v 옵션은 자세한 정보를 표시하도록 합니다. 이 명령어는 해당 디렉토리를 사용 중인 프로세스들의 PID와 해당 프로세스들의 상세 정보를 보여줍니다.
위 도구들을 통해 프로세스 ID를 알았다면 kill -9 12345(프로세스 ID) 명령어를 입력하시고 rm -rf로 삭제를 다시 진행하시면 됩니다.
하지만, PID와 ACCESS가 kernel mount 인 경우도 있는데 이럴 때는 sudo umount /path/to/mounted/directory 명령어를 통해 커널이 마운트한 디렉토리를 해제하시고 삭제하시면 됩니다.

참고