Files
為什麼修改文件時目錄的 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
當您執行
emacs
它時,它會在他的情況下創建一個備份文件test.txt~
。如果已經有一個具有該名稱的文件,我懷疑它會刪除它並創建一個新文件。該新文件創建正在修改目錄,從而更新其修改和更改時間。相反,如果您說
echo new line >> blah.txt
您不會創建任何額外的文件,因此不會更新目錄中的這些條目。在這種情況下,shell 只是打開文件(用於追加)。