2021-05-12 14:32:11
Linux下檔案的三個時間(Atime,Mtime,Ctime)
檔案的三個時間
我們已經很熟悉windows系統了,那麼我們在windows下新建一個檔案,我們知道它在儲存的時候肯定是會儲存一下檔案的建立時間之類的資訊的,那麼我們來看看windows下的一個檔案儲存了幾個時間資訊。
這是我在電腦找到的一個cpp檔案,看它的屬性是可以看到儲存了這個檔案的建立時間、修改時間、和存取時間三個時間。
那麼在linux中是怎樣的,我們在linux中新建一個檔案,然後用stat命令檢視檔案資訊,如下圖:
可以從上圖看到系統為我們儲存了這個的三個時間,分別是Access time、Modify time、Change time,也就是存取時間、修改時間和狀態時間。
那麼與前面所說的windows下做一個對比:
在windows下,一個檔案有:建立時間、修改時間、存取時間。
而在Linux下,一個檔案也有三種時間,分別是:存取時間、修改時間、狀態時間
那麼可以知道,在linux中是檔案是沒有建立時間的,只是如果剛剛建立一個檔案,毋庸置疑它的三個時間是都等於建立時間的,就像剛才建立的test檔案,我們看到它的三個時間是相等的。那麼在linux上這三個時間分別代表著什麼,隨著什麼而改變:
>修改時間:檔案的內容被最後一次修改的時間,我們經常用的ls -l命令顯示出來的檔案時間就是這個時間,當用vim對檔案進行編輯之後儲存,它的mtime就會相應的改變;
>存取時間:對檔案進行一次讀操作,它的存取時間就會改變。例如像:cat、more等操作,但是像之前的state還有ls命令對atime是不會有影響的;
>狀態時間:當檔案的狀態被改變的時候,狀態時間就會隨之改變,例如當使用chmod、chown等改變檔案屬性的操作是會改變檔案的ctime的。
…………………………………………………………………………………………………
每個時間改變的例子
》》上面的檔案資訊中可以看到test檔案的存取許可權,那麼我現在給擁有者新增執行許可權,chmod u+x test,再此進行stat操作:
可以看到這個改變了它許可權的操作知識改變了test的狀態時間,其他兩個時間是沒右改變的。
》》現在對檔案進行讀操作,cat test,但此時我們的test中還沒有寫入什麼東西,所以是不會有什麼顯示出來的
和之前的對比可以看到此時是只有存取許可權改變了,其他許可權沒有變化
》》最後我們再來用vim指令對test進行編輯,給檔案中簡單的寫入"Hello !"
咦,此時雖然說檔案的修改時間發生了改變,但同時存取時間和狀態時間也被改變了,那麼到底是不是修改時間被改變就改變了檔案的三個時間呢?其實這也很好理解,當用vim對檔案進行了編輯,那麼相應的也相當於存取了檔案並且你對檔案進行了內容上的新增,這個檔案的的大小等狀態也發生了變化,所以檔案的存取時間和狀態時間也會跟著改變,並不奇怪。那麼如果我只是用vim命令,沒有進行檔案內容的新增而是直接退出,就只有它的存取時間發生了改變,說明vim操作先對檔案進行存取,如下圖所示:
…………………………………………………………………………………………………
單獨檢視三個時間的操作
除了可以通過stat來檢視檔案的mtime,ctime,atime等屬性,也可以通過ls命令來檢視,具體如下:
ls -lc filename 列出檔案的 ctime (最後更改時間)
ls -lu filename 列出檔案的 atime(最後存取時間)
ls -l filename 列出檔案的 mtime (最後修改時間)
本文永久更新連結地址:http://www.linuxidc.com/Linux/2016-08/134739.htm
相關文章