리눅스 커널에서 inode로 파일을 삭제하는 방법

리눅스 커널에서 inode로 파일을 삭제하는 방법

Linux 커널에 파일의 inode가 있는데, inode로 파일을 삭제하고 싶습니다.

inode의 모든 dentry를 연결 해제해야 합니까? 아니면 덴트리 연결을 해제해야 하나요?

무엇을 보호하려면 어떤 잠금 장치를 사용해야 합니까?

답변1

이식 가능한 파일 제거 호출, unlink(), 제거() 및 더 높은 수준의 래퍼는 거의 모두 경로 이름을 사용합니다. Inode는 대부분 구현 세부 사항입니다.

쉘에서 이를 수행하려면 GNU와 같은 도구를 사용하십시오.찾다.

find /tmp  -type f -inum $INODE

/tmp검색할 경로를 $INODE숫자로 바꾸세요 . -delete 결과의 연결을 해제하려면 추가하세요 . 동일한 inode의 여러 이름이 발견될 수 있습니다.

이 방법은 모든 파일을 탐색하므로 효율적이지 않습니다.

답변2

Linux에서는 파일을 삭제할 수 없습니다.

당신은 무엇을~할 수 있다해야 할 일은 이에 대한 모든 참조를 제거하는 것입니다. 그러면 파일 시스템이 자동으로 공간을 제거하고 inode를 사용되지 않은 것으로 표시합니다.

그러나 프로세스를 실행하여 파일을 참조할 수 있습니다. 파일 시스템에 해당 파일을 가리키는 것이 없더라도 파일은 계속 존재합니다. 프로세스가 완료되거나 파일이 닫힐 때까지 해당 파일은 계속 존재합니다.

관련 정보