읽고 있는 파일로 파일 이동

읽고 있는 파일로 파일 이동

파일을 이동했는데 대상 파일이 이미 존재하여 읽고 있는 중이라면 작업이 성공할까요? 대상 파일에 대한 읽기 작업이 지속되는 시간에 따라 달라지나요?

답변1

읽기 작업은 완료하는 데 걸리는 시간에 관계없이 성공합니다.

왜 그리고 어떻게 작동합니까?

읽기 작업이 시작되면 파일의인덱스 노드파일의 내용을 읽기 위한 핸들로 사용됩니다.

다른 파일이 대상 파일로 이동되면 결과는 새 inode가 됩니다. 즉, 디스크에 있는 파일의 물리적 내용이 다른 곳에 배치되고 읽고 있는 파일의 원래 내용은 변경되지 않습니다.

유일한 공통점은 경로/파일 이름이며, 기본 inode와 디스크의 물리적 위치는 변경됩니다.

읽기 작업이 완료되면(다른 프로세스에 이전 파일에 대한 열린 파일 핸들이 아직 없고 해당 inode를 참조하는 다른 하드 링크가 없다고 가정) 이전 데이터가 삭제됩니다.

이동 작업이 완료되면 파일은 새로운 inode 인덱스 번호를 갖게 됩니다.

를 사용하여 파일 inode 인덱스 번호를 표시할 수 있습니다 ls -i /tmp/some-file.

위와 같은 이유로, 파일을 사용하는 애플리케이션은 파일의 내용이 아닌 inode(디스크의 실제 파일 내용을 가리키는)에서만 읽기 때문에 애플리케이션에서 아직 사용 중인 파일을 삭제할 수 있습니다. 파일 시스템에서 참조된 내용이 삭제되었습니다.

관련 정보