在咱們進行系統運維的時候,會須要去查看系統下文件的一些時間屬性,如建立時間、修改時間等,好比查看一個應用的配置文件的修改時間,用於初步判斷該文件是否被篡改過。那麼本文就針對Linux系統下的文件的時間屬性來作一個介紹。vim
在Linux系統下,文件的時間屬性主要分爲三種:less
訪問時間 atime:運維
也就是Access time。讀一次文件的內容,該文件的atime就會更新。好比常見的使用more、cat對該文件進行查看時,其atime將更新。ide
修改時間 mtime:佈局
也就是Modify time。對該文件進行內容上的修改,該文件的mtime就會更新。好比常見的使用vi、vim對文件進行修改後保存,其mtime將更新。優化
文件屬性變動時間 ctime:spa
也就是Change time。對該文件的屬性狀態進行修改,改文件的ctime就會更新。好比文件名、內容、大小、權限、所屬組等改變時,其ctime將更新。blog
使用ll或ls -l命令查看的就是mtime:圖片
使用ll --time=atime或ls -lu查看的就是atime:資源
使用ll --time=ctime或ls -lc查看的就是ctime:
固然,咱們還可使用stat命令來同時查看文件的三種時間屬性:
使用cat命令來觸發其atime更新:
使用vi修改來觸發其mtime更新:
在這裏咱們能夠看到該文件的mtime和ctime都被更新了,並且是ctime緊接着mtime更新,幾乎是同一時刻。那是由於使用vi修改保存時,理所固然的mtime更新,隨後因爲文件大小發生變化,觸發ctime更新。
使用chmod來觸發其ctime更新:
簡單總結下,能正常觸發修改上述3種時間屬性的命令和效果:
cat、less、more等只讀文件,不修改文件的操做,只會修改atime的值。
chmod、chown等修改文件權限、全部者,所屬組的操做,會修改atime和ctime的值。
vi等修改文件內容的操做,會修改atime、ctime、mtime的值。(實際操做中,出現過atime不變的狀況)
結合find命令查找特定時間要求的文件,例如查詢最近24小時內修改過的文件:find /data -mtime 24
經過查看atime來判斷是否該文件被查看、訪問過,沒有多大意義,由於任何一個操做均可能引發atime的變動,並且一個文件建立後至少要被讀取才算有用吧。
經過查看mtime來判斷是否該文件被修改過,其實也不算準確,由於mtime除了正常修改文件會更新外,也能夠被特地進行修改到一個虛假的時間點裏,如使用touch命令。
好比使用touch命令把時間修改到3天前,從下圖中咱們能夠看到atime和mtime都被修改到了3天前:
也能夠修改到特定的時間點上:
不過從上面兩個修改能夠看出,ctime是沒有被修改的。
那麼是否能夠經過ctime來判斷該文件是否被修改過呢?也不行!由於這個時間也是能夠被更新的,仍是使用touch命令,如touch -c和touch -a,不過能夠看出touch -c將修改3個時間,touch -a只修改了atime和ctime。
默認狀況下,系統每次訪問、修改、建立磁盤裏的文件的時候,都會更新文件的atime,致使系統會有部分資源消耗在此,從而使得系統開銷增長。若是咱們能讓系統不對atime進行記錄更新,那麼能夠在某個程度上讓系統獲得必定的優化,參考操做以下:
echo -ne
"
proc /proc proc noatime,defaults 0 0
"
>>/etc/fstab
sudo mount -a
簡單回顧一下,咱們從3種時間屬性的開始引入;並介紹藉由ll命令查看文件的時間屬性;再演示觸發更新時間的幾個命令的效果;分享利用時間屬性的通常常見操做;最後提供時間屬性的系統優化的操做給你們參考。以上是本文對進行系統運維時,查看Linux系統下文件的時間屬性的分享,但願對你們有幫助。
做者:何立