열린 파일이 포함된 디렉터리를 이동할 수 있나요?

열린 파일이 포함된 디렉터리를 이동할 수 있나요?

디렉토리를 사용하는 일련의 프로세스를 상상해보십시오 /home/user/logs. 일부 로그는 장기간 열려 있습니다.

답변1

예, 특정 조건에서는 가능합니다. 파일의 상위 디렉터리를 이동해도 파일의 inode는 변경되지 않으므로 열린 파일 핸들은 여전히 ​​유효합니다. 요구 사항은 다음과 같습니다

  • 파일 시스템 간에 디렉터리를 이동하지 않습니다. 물론 이는 파일의 inode 번호를 변경합니다.
  • 실제로 프로세스하다파일을 열어두고 가끔씩 닫지 마십시오(그렇다면 새 상위 디렉토리를 알 수 있도록 애플리케이션을 재구성해야 합니다).
  • ext2/3/4 또는 다양한 ufs 버전 중 하나를 사용하고 있습니다. 다른 파일 시스템에 대해서는 내부적으로 어떻게 구성되어 있는지 잘 모르기 때문에 솔직하게 말할 수 없습니다.

답변2

프로세스는 일반적으로 오랫동안 로그에 파일을 열어 두지 않습니다.

예, 언제든지 모든 프로세스에서 사용 중인 디렉터리나 파일을 이동/삭제할 수 있습니다. 도대체 프로세스가 실행되는 동안 프로세스의 실행 파일을 삭제할 수 있으며 계속 실행됩니다.

그러나 몇 가지 가능성에 대비하십시오.

  • 로그 파일에 쓰기 위해 프로세스를 다시 열면 해당 프로세스가 다시 생성됩니다.
  • 프로세스는 새 위치 대신 이전 위치에 계속해서 씁니다.
  • 프로세스의 실행 파일을 삭제하면 다시 시작할 수 없습니다.

파일 설명자를 사용하는 프로세스가 없으면 파일이 삭제될 때 물리적으로 지워집니다. 파일이 이동/삭제되는 것을 즉시 확인할 수 있습니다.

관련 정보