1. 程式人生 > >linux 下檔案的3種時間狀態 atime ctime mtime

linux 下檔案的3種時間狀態 atime ctime mtime

我們在windows下新建一個檔案,我們知道它在儲存的時候肯定是會儲存一下檔案的建立時間之類的資訊的。
看它的屬性是可以看到儲存了這個檔案的建立時間、修改時間、和訪問時間三個時間。
那麼在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個時間,發現只有atime 發生了改變,所以atime的時間帶表最 後一次讀檔案時的時間           >對檔案進行寫操作 給檔案中寫入 標頭檔案 使用 vim  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 (最後修改時間)