읽고있는 파일로 파일 이동


10

파일이 이동되고 대상 파일이 이미 존재하고 현재 읽고있는 경우 작업이 성공합니까? 대상 파일에 대한 읽기 작업이 얼마나 오래 지속됩니까?

답변:


9

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

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

읽기 작업이 시작되면 파일의 Inode 는 파일의 내용을 읽는 핸들로 사용됩니다.

다른 파일을 대상 파일로 이동할 때 결과는 새로운 inode가됩니다. 즉, 디스크에있는 파일의 실제 내용이 다른 곳에 배치되고 읽고있는 파일의 원래 내용이 건드리지 않습니다.

그들이 공통적으로 가지고있는 유일한 것은 경로 / 파일 이름이며 디스크의 기본 inode 및 물리적 위치가 변경됩니다.

읽기 작업이 완료되면 (다른 프로세스가 여전히 이전 파일에서 열린 파일 핸들을 가지고 있지 않으며 inode를 참조하는 다른 하드 링크가없는 경우) 이전 데이터는 삭제됩니다.

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

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

위에서 설명한 것과 같은 이유로, 파일을 사용하는 응용 프로그램은 파일을 참조하는 동안 파일을 사용하는 응용 프로그램은 디스크의 실제 파일 내용을 가리키는 inode에서 읽기만하므로 응용 프로그램에서 여전히 사용중인 파일을 삭제할 수 있습니다. 파일 시스템에서 삭제됩니다.


1
하드 링크를 언급하는 것을 잊었습니다. 읽기 작업이 완료 될 때 해당 inode가 다른 디렉토리 항목에서 링크 된 경우 데이터는 이름이 있기 때문에 제거되지 않습니다.
cjm

지적 해 주셔서 감사합니다. 내 답변을 편집하고 추가했습니다.
Elias Probst
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.