touch命令和三個時間戳

       touch這個命令最常被使用的情況是:

           1>簡歷一個空文件

           2>將一個文件的時間戳修改爲目前的時間

與touch相關的三個時間戳分別是:

           1>access time (atime)

   當一個文件內容被讀取時,就會更新這個讀取時間。舉例,使用cat查看/tmp/mn.txt:

wKioL1M85C6gNqHpAACtX0WKwy0647.jpg

使用stat查看該文件的三個時間戳:

wKioL1M85KyD85_fAAH6tJ7UwO8605.jpg

顯然,我們可以看到atime被更新了

           2>modification time (mtime)

   當文件內容數據被改變時,就會更新這個時間。內容數據是指文件的內容,而不是文件的屬性或權限。wKioL1M85qHjjgsfAAISTIVO_Q8949.jpg

以上是我用vim編輯了mn.txt,之後使用stat查看的結果,mtime被改變了。

           3>status time (ctime)

   當該文件狀態改變時,就會更新這個時間,舉例,像是權限和屬性被更改,都會更新這個時間。

但我們也看到上面的情況,mtime改變了,ctime也變了。這又是爲什麼呢?我是覺得如果文件的內容改變,一定也會導致文件的屬性發生變化,就比如說文件的大小,會隨着文件的增刪而改變。

   而且我觀察到在改變了文件內容之後,mtime和ctime並不完全一致,在後面的秒數上會有微小的差別。


   使用touch命令可以對文件的三個時間戳進行修改:

wKiom1M86-vjfuLnAAIR0QOwXRk107.jpg

以上我使用touch命令將mn.txt三個時間戳修改到當前。

   可以分別使用 touch -a 和 touch -m 來改變 atime 和 mtime 。

wKioL1M87X-had5WAAIk073XmNI537.jpg

但我們使用 touch -a 時,會改變文件的訪問時間(atime),同時也會改變文件的狀態時間(ctime),並且它們完全相同,沒有任何差異。

wKioL1M87ujw3QvCAAIXW-qp-A0759.jpg

我們使用 touch -m 時,會改變文件的修改時間(mtime),同時也會改變文件的狀態時間(ctime),並且它們也完全相同,沒有任何差異。這與使用vim編輯文件時的情況不一樣。

   但不管怎麼說,使用 touch -a ,touch -m 以及使用vim對文件進行編輯都是對文件狀態進行修改,所以說 ctime 就會改變。

   另外,經過測試,我發現一個有趣的情況,我們來看:

首先我使用vim對mn.txt再次進行編輯:

wKioL1M88pDj8HawAAIfjo1j420209.jpg

然後我們使用cat打開這個文件:

wKiom1M88x6xjODcAACUdKe6DL8950.jpg

使用stat查看文件狀態,並且在之後使用vim打開這個文件,注意:不對其做任何編輯操作,退出,也就是說,我只是使用vim打開看了mn.txt這個文件,而沒有對其進行編輯操作,我們來看看效果:


wKiom1M89ZLhVr19AAQIaxe56Q0548.jpg

看到了嗎?使用vim和使用cat打開文件查看內容的效果是不一樣的,使用cat會改變文件的atime,而使用vim查看文件內容是不會改變這個時間戳的。因此,這可以說是一個小小的安全隱患,如果文件權限設置不當就會泄露文件內容,並且不易察覺。

   touch -d:後面可以跟一個指定的時間,而不是用目前的時間:

wKioL1M8-m2yLx_kAAJZeeusxEw602.jpg

三個時間戳均發生了改變,atime 和 mtime 都變成了兩天前的時間,而ctime 則記錄了當前的時間。

我們也可以使用ll命令(ls -l的別名)來查看:

wKiom1M8_PiAFrfOAAFI71sg61E402.jpg

       touch -t:後面也可以跟一個指定的時間,但它有格式限制:[YYMMDDhhmm]

wKiom1M8_h2g_d04AAJaYFOOLGA440.jpg

   所以說,touch -t和touch -d用法類似,都會改變atime和mtime,並且ctime會記錄atime 和mtime 變化的時間點!

   透過touch這條命令,我們可以輕易修改文件的時間戳,並且可以建立空文件!不過,即使我們複製一個文件是,複製所有屬性,也無法複製ctime這個屬性。ctime 記錄的就是這個文件狀態被改變的時間點。但我們平時應該更加關注的是mtime。而使用ll來查看文件的屬性時,所顯示的就是mtime:

wKioL1M9ARDzUjOpAABzmTWjEyM204.jpg






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章