Files

為什麼修改文件時目錄的 mtime 和 ctime 會發生變化?

  • October 16, 2015

我正在學習關於文件和目錄的 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

當您執行emacs它時,它會在他的情況下創建一個備份文件test.txt~。如果已經有一個具有該名稱的文件,我懷疑它會刪除它並創建一個新文件。該新文件創建正在修改目錄,從而更新其修改和更改時間。

相反,如果您說echo new line >> blah.txt您不會創建任何額外的文件,因此不會更新目錄中的這些條目。在這種情況下,shell 只是打開文件(用於追加)。

引用自:https://unix.stackexchange.com/questions/222508