首先可以使用stat 命令來查詢文件的inode信息,其中包括ctime atime mtime等
1、文件的atime、ctime、mtime時間的理解
文件的 Access time,atime 是在讀取文件或者執行文件時,更改的任何對inode的訪問都會使此處改變。
文件的Modified time,mtime 是在寫入文件時隨文件內容的更改而更改的。
文件的 Change time,ctime 是在寫入文件、更改所有者、權限或鏈接設置時隨 Inode 的內容更改而更改的。只要stat出來的內容發生改變就會發生改變。mtime的改變必然導致ctime的改變。
1)modification time (mtime,修改時間):這個時間指的是文件內容修改的時間,而不是文件屬性的修改,當數據內容修改時,這個時間就會改變,用命令ls -l默認顯示的就是這個時間:
2)change time (ctime,狀態時間):當一個文件的狀態改變時,這個時間就會改變,例如更改了文件的權限與屬性等,它就會改變。相當於ls -l –time=ctime所看到的時間;
3)access time (atime,訪問時間):當讀取文件內容時,就會更改這個時間,例如使用cat 去讀取/etc/man.config,那麼該文件的atime就會改變。也就是用ls -l –time=atime看到的時間
2、文件夾的atime、ctime、mtime
1)文件夾的 Access time,atime 是在讀取文件或者執行文件時更改的(我們cd進入目錄不會引起atime的改變,但ls一下就不同了)。
2)文件夾的 Modified time,mtime 是在文件夾中有文件的新建、刪除纔會改變(如果只是改變文件內容不會引起mtime的改變,換句話說如果ls -f <directory>的結果發生改變mtime就會被刷新。這裏可能有人要爭論了:我進入dd這個文件夾vi了一個文件然後退出,前後ls -f <directory>的結果沒有改變但是文件夾的mtime發生改變了……這點請主意vi命令在編輯文件時會在本文件夾下產生一 個".file.swp"臨時文件,該文件隨着vi的退出而被刪除……這就導致了mtime的改變 ,不信你可以用nano修改文件來試驗)。
文件夾的 Change time,ctime 基本同文件的ctime,其體現的是inode的change time。
這裏還要補充一點:mount -o noatime(mount -o remount,atime / 可以在線重新掛載根目錄) 可以選擇不記錄文件的atime的改變,這意味着什麼呢?當你創建了這個文件後這個文件的atime就定格了,除非你用touch或者touch -a強制刷新文件的atime。這樣在可以在一定程度上提升文件系統的讀寫性能,特別是網站這種系統中在fstab裏面加上noatime是個好主意
使用find命令時,常爲其中的atime/ctime/mtime感到困惑,一直沒徹底弄個明白,今天仔細看了以上兩篇文章,總算有所領悟,總結如下:
1、含義:
文件的 Access time,atime 是在讀取文件或者執行文件時更改的;
文件的 Modified time,mtime 是在寫入文件時隨文件內容的更改而更改的;
文件的 Create time,ctime 是在寫入文件、更改所有者、權限或鏈接設置時隨 Inode 的內容更改而更改的。
2、文件各種事件標記的顯示方法
ls -lc filename 列出文件的 ctime
ls -lu filename 列出文件的 atime
ls -l filename 列出文件的 mtime
3、某網友的實際試驗結果:
修改文件,-mtime 改了, -ctime 也會改.
訪問文件,-atime 改了, -ctime 沒變.
chown, chgrp, chmod,mv, 都會使 -ctime 改變,但不影響 -atime 和-mtime.
touch 可以改 -mtime and/or -atime,但 touch -a 只改訪問時間時,-ctime也改了.
touch -m 改修改時間時,-ctime當然也改了
改變文件或目錄時間命令touch
參數說明
-a :修改atime
-m :修改mtime
-c :僅修改文件的時間(三個時間一起修改),若該文件不存在則不建立新的文件
-d :後面可以接想修改的日期而不用目前的日期,也可以使用 –date=”日期或時間”
-t :後面可以接想修改是時間而不用目前的時間,格式爲[YYMMDDhhmm]
“改變時間(change time)”和“修改時間(modification time)”。
當你同熟練的UNIX用戶進行交談時,你經常會聽到他們傲慢地講出術語“改變時間(change time)”和“修改時間(modification time)”。對於許多人(和許多字典而言),改變和修改是相同的。這裏會有什麼不同那?
改變和修改之間的區別在於是改某個組件的標籤還是更改它的內容。如果有人說chmod a-w myfile,那麼這是一個改變;如果有人說echo foo >> myfile,那麼 這是一個修改。改變是文件的索引節點發生了改變;修改是文本本身的內容發生了變化。[文件的修改時間也叫時間標誌(timestamp).]
只要討論改變時間和修改時間,就不可能不提到“訪問時間(accesstime)”.訪問時間是文件最後一次被讀取的時間。因此閱讀一個文件會更新它的訪問時間,當它的改變時間並沒有變化(有關文件的信息沒有被改變),它的修改時間也同樣如此(文件本身沒有被改變)有時,在許多地方改變時間或者“ctime”被錯誤地寫成“創建時間”,包括某些UNIX參考手冊。不要相信他們