首先可使用stat 命令來查詢文件的inode信息,其中包括ctime atime mtimenode
Mtime:文件內容改變,ctime文件的狀態改變,如chmod權限等。web
調整mtime,ctime會變。調整ctime,mtime不必定變化。shell
1.文件的容易理解:性能
Access time,atime 是在讀取文件或者執行文件時更改的任何對inode的訪問都會使此處改變。
Modified time,mtime 是在寫入文件時隨文件內容的更改而更改的。
Change time,ctime 是在寫入文件、更改全部者、權限或連接設置時隨 Inode 的內容更改而更改的。只要stat出來的內容發生改變就會發生改變。mtime的改變必然致使ctime的改變。網站
mtime (modification time ):在寫入文件時隨文件內容的更改而更改的時間。咱們用ls -l看到的時間,就是mtimespa
ctime (status time):是在寫入文件、更改全部者、權限或連接設置時隨Inode的內容更改而更改的時間。至關於ls -l –time=ctime所看到的時間orm
atime (access time):讀取文件或者執行文件時更改的時間。也就是用ls -l –time=atime看到的時間排序
modification time (mtime,修改時間):這個時間指的是文件內容修改的時間,而不是文件屬性的修改,當數據內容修改時,這個時間就會改變,用命令ls -l默認顯示的就是這個時間:索引
2)status time (ctime,狀態時間):當一個文件的狀態改變時,這個時間就會改變,例如更改了文件的權限與屬性等,它就會改變。事件
3)access time (atime,訪問時間):當讀取文件內容時,就會更改這個時間,例如使用cat 去讀取/etc/man.config,那麼該文件的atime就會改變。
2.文件夾的:
文件夾的 Access time,atime 是在讀取文件或者執行文件時更改的(咱們只cd進入一個目錄而後cd ..不會引發atime的改變,但ls一下就不一樣了)。
文件夾的 Modified time,mtime 是在文件夾中有文件的新建、刪除纔會改變(若是隻是改變文件內容不會引發mtime的改變,換句話說若是ls -f <directory>的結果發生改變mtime就會被刷新。這裏可能有人要爭論了:我進入dd這個文件夾vi了一個文件而後退出,先後ls -f <directory>的結果沒有改變可是文件夾的mtime發生改變了……這點請主意vi命令在編輯文件時會在本文件夾下產生一 個".file.swp"臨時文件,該文件隨着vi的退出而被刪除……這就致使了mtime的改變 [Auxten:p]不信你能夠用nano修改文件來試驗)。
文件夾的 Change time,ctime 基本同文件的ctime,其體現的是inode的change time。
這裏還要補充一點:mount -o noatime(mount -o remount,atime / 能夠在線從新掛載根目錄) 能夠選擇不記錄文件的atime的改變,這意味着什麼呢?當你建立了這個文件後這個文件的atime就定格了,除非你用touch或者touch -a強制刷新文件的atime。這樣在能夠在必定程度上提高文件系統的讀寫性能,特別是網站這種系統中在fstab裏面加上noatime是個好主意 O(∩_∩)O
使用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
三、某網友的實際試驗結果:
修改文件,-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).]
只要討論改變時間和修改時間,就不可能不提到「訪問時間(access
time)」.訪問時間是文件最後一次被讀取的時間。所以閱讀一個文件會更新它的訪問時間,當它的改變時間並無變化(有關文件的信息沒有被改變),它的
修改時間也一樣如此(文件自己沒有被改變)
有時,在許多地方改變時間或者「ctime」被錯誤地寫成「建立時間」,包括某些UNIX參考手冊。不要相信他們
Linux系統文件有三個主要的時間屬性,分別是ctime(change time, 而不是create time), atime(access time), mtime(modify time)。後來爲了解決atime的性能問題,還引入了一個relatime的屬性,下面一一解釋。
ctime, 不少朋友把它理解成create time,包括不少誤導人的書籍也是這麼寫。實際上ctime是指change time。
mtime, 就是modify time。
mtime和ctime的區別在於,只有修改了文件的內容,纔會更新文件的mtime,而對文件改名,修改文件的屬主等操做,只會更新ctime。
舉例說明: 對文件進行mv操做,mtime不變,ctime更新;編輯文件內容,mtime和ctime同時修改。其餘操做的影響,能夠本身試驗。可是我發現對文件執行touch操做,會同時修改mtime和ctime,因此具體修改哪一個時間,還取決於不一樣命令本身的實現;
atime, 這個就是每次查看文件內容的時候會更新。好比cat操做,而ls操做是不會更新的。
你能夠經過stat來查看文件的mtime,ctime,atime等屬性,也能夠經過ls命令來查看,具體以下:
ls -lc filename 列出文件的 ctime
ls -lu filename 列出文件的 atime
ls -l filename 列出文件的 mtime
從kernel2.6.29開,還默認集成了一個relatime的屬性。這個功能我我的理解是爲了解決atime的兼容性問題。由於在文件讀操做很頻繁的系統中,atime更新所帶來的開銷很大,因此不少SA都在掛裝文件系統的時候使用noatime屬性來中止更新atime。可是有些程序須要根據atime進行一些判斷和操做,因此Linux就推出了一個relatime特性。
使用這個特性來掛裝文件系統後,只有當mtime比atime更新的時候,纔會更新atime。事實上,這個時候atime和mtime已是同一個東西了。因此這個選項就是爲了實現對atime的兼容才推出的。並非一個新的時間屬性。使用方法就是經過mount -o relatime /dir來掛裝目錄。
1> mount 使用選項noatime能夠改善讀取性能2> 使用 ls 來對文件時間屬性排序ls -lc 列出文件的ctime , 排序ls -ltcls -lu 列出文件的atime , 排序ls -ltuls -l 所列出來的時間是mtime 列出文件的mtime並排序 ls -lt3> find找出一天以內被修改過的文件,使用ctime 由於有可能改變屬性的操做 會改變ctime, 而不會改變mtimeshell > find ./ -ctime -1