파일이 수정되면 디렉토리의 mtime과 ctime이 변경되는 이유는 무엇입니까?

파일이 수정되면 디렉토리의 mtime과 ctime이 변경되는 이유는 무엇입니까?

파일과 디렉토리에 대한 atime, ctime, mtime에 대해 배우고 있습니다. 제가 보기에는 디렉토리에 있는 파일을 수정하더라도 "디렉토리 파일" 자체의 inode나 파일 내용은 변경되지 않으므로 ctime과 mtime은 동일하게 유지되어야 합니다.

그런데 아래 테스트에서는 파일을 편집하면 변경시간과 수정시간이 바뀌는 현상이 발생합니다. 그들은 왜 변했는가?

$ ls    

blah.txt  test.txt  test.txt~

$ cd ..

$ stat -x Write
      File: "Write"
      Size: 170          FileType: Directory
      Mode: (0777/drwxrwxrwx)         Uid: (  501/user)  Gid: (   20/   staff)
    Device: 1,4   Inode: 652017    Links: 5
    Access: Tue Aug 11 08:20:33 2015
    Modify: Tue Aug 11 08:01:49 2015
    Change: Tue Aug 11 08:01:49 2015

$ cd Write

$ ls
    blah.txt  test.txt  test.txt~

$ emacs test.txt

$ cd ..

$ stat -x Write
      File: "Write"
      Size: 170          FileType: Directory
      Mode: (0777/drwxrwxrwx)         Uid: (  501/user)  Gid: (   20/   staff)
    Device: 1,4   Inode: 652017    Links: 5
    Access: Tue Aug 11 08:20:48 2015
    Modify: Tue Aug 11 08:20:48 2015
    Change: Tue Aug 11 08:20:48 2015

답변1

실행하면 emacs해당 케이스에 백업 파일이 생성됩니다 test.txt~. 해당 이름의 파일이 이미 존재한다면 해당 파일을 삭제하고 새 파일을 생성할 것으로 의심됩니다. 새 파일을 생성하면 디렉토리가 수정되므로 수정 및 변경 시간이 업데이트됩니다.

echo new line >> blah.txt대신 추가 파일을 생성하지 않을 것이므로 디렉터리에서 이러한 항목을 업데이트하지 않을 것이라고 말하면 됩니다 . 이 경우 쉘은 파일(추가용)만 엽니다.

관련 정보