### 檔案的時間戳(atime/ctime/mtime)
> 檔案的時間屬性有三種:atime/ctime/mtime。atime是access time,即上一次的通路時間;mtime是modify time,是檔案的修改時間;ctime是change time,也是檔案的修改時間,隻不過這個修改時間計算的inode修改時間,也就是中繼資料修改時間。檔案還有一個建立時間(create time),大多數unix系統上都認為這是個無用的屬性,一般工具無法擷取這個時間,但是對于ext家族檔案系統,通過它的底層調試工具debugfs可以擷取create time。
>
> 但mtime隻有修改檔案内容才會改變,更準确的說是修改了它的data block部分;而ctime是修改檔案屬性時改變的,确切的說是修改了它的中繼資料部分,例如重命名檔案,修改檔案所有者,移動檔案(移動檔案沒有改變datablock,隻是改變了其inode指針,或檔案名)等.當然,修改檔案内容也一定會改變ctime(修改檔案内容至少已經修改了inode記錄上的mtime,這也是中繼資料),也就是說mtime的改變一定會引起ctime的改變。
>
> 對目錄而言,考慮目錄檔案的data block,可知在目錄中建立、删除檔案以及目錄内其他任意檔案操作都會改變mtime,因為目錄裡的任何東西都是目錄中的内容;而目錄的ctime,除了目錄的mtime引起ctime改變之外,對目錄本身的中繼資料修改也會改變ctime。
>
> 總結下:
>
> (1).atime隻在檔案被打開通路時才改變,若不是打開檔案編輯内容(如重定向内容到檔案中),則ctime和mtime的改變不會引起atime的改變;
>
> (2).mtime的改變一定引起ctime的改變,而通路檔案時(例如cat),atime不一定會改變,是以atime"改變"(這個改變是假象,見下文分析)不一定會影響ctime。
stat 檢視時間戳,atime/ctime/mtime。
~~~
[[email protected] test]# stat index.md
File: ‘index.md’
Size: 10 Blocks: 8 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 1356477 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-06-04 15:37:53.678818897 +0800
Modify: 2019-06-04 15:37:51.149753586 +0800
Change: 2019-06-04 15:37:51.149753586 +0800
Birth: -
~~~