linux 下檔案的3種時間狀態 atime ctime mtime
看它的屬性是可以看到儲存了這個檔案的建立時間、修改時間、和訪問時間三個時間。
那麼在linux中是怎樣的,我們在linux中新建一個檔案,然後用stat命令檢視檔案資訊,如下圖:
只是如果剛剛建立一個檔案,毋庸置疑它的三個時間是都等於建立時間的,如上圖的test.c我們看到它的三個時間是相等的。那麼在linux上這三個時間分別代表著什麼,隨著什麼而改變:
>修改時間(mtime):檔案的內容被最後一次修改的時間,我們經常用的ls -l命令顯示出來的檔案時間就是這個時間,當用vim對檔案進行編輯之後儲存,它的mtime就會相應的改變;
>訪問時間(atime):對檔案進行一次讀操作,它的訪問時間就會改變。例如像:cat、more等操作,但是像之前的state還有ls命令對atime是不會有影響的;
>狀態時間(ctime):當檔案的狀態被改變的時候,狀態時間就會隨之改變,例如當使用chmod、chown等改變檔案屬性的操作是會改變檔案的ctime的。
mtime和ctime的區別在於,只有修改了檔案的內容,才會更新檔案的mtime,而對檔案更名,修改檔案的屬主等操作,只會更新ctime。
舉例說明: 對檔案進行mv操作,mtime不變,ctime更新;編輯檔案內容,mtime和ctime同時修改。
atime, 這個就是每次檢視檔案內容的時候會更新。比如cat操作,而ls操作是不會更新的。
>我們現在給test.c的擁有這加上執行許可權chmod u+x test,再此進行stat操作:
發現只有ctime 改變其他都沒變,說明修改了檔案的屬性時,ctime 隨之改變。
>接下來對檔案進行讀操作 cat test.c 然後在使用stat test.c
由上圖可以看出 檔案的3個時間都發生 了改變,這其實並不說明了mtime發生了改變另外2個也要隨之改變,那麼出現上邊的情 況是什麼原因呢,其實是因為我們修改檔案內容的時候: Ⅰ.我們要先訪問檔案,所以檔案訪問時間(atime)發生了改變。 Ⅱ.檔案的屬性比如檔案的大小也發生了改變,所以就相當於修改了檔案的屬性,所以ctime發生了改變 >當我們使用vim test.c而不對內容進行修改的時
發現只有訪問時間生了改變,所以說明在vim對檔案進行寫入時,先對檔案進行訪問。 >使用 echo “hello” >> test.c 對檔案進行寫入 此時訪問時間沒發生變化,由於用echo對檔案進行寫入時便沒有對檔案進行訪問而直接進行寫入
單獨檢視三個時間的操作
除了可以通過stat來檢視檔案的mtime,ctime,atime等屬性,也可以通過ls命令來檢視,具體如下:
ls -lc filename 列出檔案的 ctime (最後更改時間)
ls -lu filename 列出檔案的 atime(最後存取時間)
ls -l filename 列出檔案的 mtime (最後修改時間)