Linux之-atime、ctime、mtime

首先可以使用stat 命令來查詢文件的inode信息,其中包括ctime atime mtime等


1、文件的atime、ctime、mtime時間的理解

文件的 Access timeatime 是在讀取文件或者執行文件時,更改的任何對inode的訪問都會使此處改變。
文件的Modified timemtime 是在寫入文件時隨文件內容的更改而更改的。
文件的 Change timectime 是在寫入文件、更改所有者、權限或鏈接設置時隨 Inode 的內容更改而更改的。只要stat出來的內容發生改變就會發生改變。mtime的改變必然導致ctime的改變。

 1)modification time (mtime,修改時間)這個時間指的是文件內容修改的時間,而不是文件屬性的修改,當數據內容修改時,這個時間就會改變,用命令ls -l默認顯示的就是這個時間:

2)change time (ctime,狀態時間):當一個文件的狀態改變時,這個時間就會改變,例如更改了文件的權限與屬性等,它就會改變。相當於ls -l –time=ctime所看到的時間;

3access time (atime,訪問時間):讀取文件內容時,就會更改這個時間,例如使用cat 去讀取/etc/man.config,那麼該文件的atime就會改變。也就是用ls -l –time=atime看到的時間

2、文件夾的atime、ctime、mtime

1)文件夾的 Access timeatime 是在讀取文件或者執行文件時更改的(我們cd進入目錄不會引起atime的改變,但ls一下就不同了)。
2)文件夾的 Modified timemtime 是在文件夾中有文件的新建、刪除纔會改變(如果只是改變文件內容不會引起mtime的改變,換句話說如果ls -f <directory>的結果發生改變mtime就會被刷新。這裏可能有人要爭論了:我進入dd這個文件夾vi了一個文件然後退出,前後ls -f <directory>的結果沒有改變但是文件夾的mtime發生改變了……這點請主意vi命令在編輯文件時會在本文件夾下產生一 個".file.swp"臨時文件,該文件隨着vi的退出而被刪除……這就導致了mtime的改變 ,不信你可以用nano修改文件來試驗)。
文件夾的 Change timectime 基本同文件的ctime,其體現的是inodechange time

這裏還要補充一點:mount -o noatime(mount -o remount,atime / 可以在線重新掛載根目錄) 可以選擇不記錄文件的atime的改變,這意味着什麼呢?當你創建了這個文件後這個文件的atime就定格了,除非你用touch或者touch -a強制刷新文件的atime。這樣在可以在一定程度上提升文件系統的讀寫性能,特別是網站這種系統中在fstab裏面加上noatime是個好主意 

使用find命令時,常爲其中的atime/ctime/mtime感到困惑,一直沒徹底弄個明白,今天仔細看了以上兩篇文章,總算有所領悟,總結如下:

 

1、含義:

  文件的 Access timeatime 是在讀取文件或者執行文件時更改的;
 
 文件的 Modified timemtime 是在寫入文件時隨文件內容的更改而更改的;
 
 文件的 Create timectime 是在寫入文件、更改所有者、權限或鏈接設置時隨 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參考手冊。不要相信他們



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