linux中ctime,mtime,atime的…

一直分不清這三個時間
linux中ctime,mtime,atime的區別
2008-10-03 14:05:39
標籤:ctime mtime atime linux 休閒
    當你同熟練的UNIX用戶進行交談時,你經常會聽到他們傲慢地講出術語“改變時間(change time)”和“修改時間(modification time)”。對於許多人(和許多字典而言),改變和修改是相同的。這裏會有什麼不同那?

    改變和修改之間的區別在於是改某個組件的標籤還是更改它的內容。如果有人說chmod a-w myfile,那麼這是一個改變;如果有人說echo foo >> myfile,那麼 
這是一個修改。改變是文件的索引節點發生了改變;修改是文本本身的內容發生了變化。[文件的修改時間也叫時間標誌 (timestamp).]

    只要討論改變時間和修改時間,就不可能不提到“訪問時間(access time)”.訪問時間是文件最後一次被讀取的時間。因此閱讀一個文件會更新它的訪問時間,當它的改變時間並沒有變化(有關文件的信息沒有被改變),它的修改時間也同樣如此(文件本身沒有被改變)

有時,在許多地方改變時間或者“ctime”被錯誤地寫成“創建時間”,包括某些UNIX參考手冊。不要相信他們
下面是我man出來的內容,僅供參考!

     st_atime
           Time when file data was last accessed. Changed by  the
           following   functions:   creat(),   mknod(),   pipe(),
           utime(2), and read(2).

     st_mtime
           Time when data was last modified. Changed by the  fol-
           lowing  functions:  creat(), mknod(), pipe(), utime(),
           and write(2).

     st_ctime
           Time when file status was last changed. Changed by the
           following   functions:   chmod(),   chown(),  creat(),
           link(2),  mknod(),  pipe(),  unlink(2),  utime(),  and
           write().

ls顯示出的time應該是mtime。

touch後,文件的三個時間應該都會改變,可以試一試。

問題描述
文件的 ctime、mtime、atime 之間有什麼區別? 
配置信息
解決方法
文件的 Access time,atime 是在讀取文件或者執行文件時更改的。
文件的 Modified time,mtime 是在寫入文件時隨文件內容的更改而更改的。
文件的 Create time,ctime 是在寫入文件、更改所有者、權限或鏈接設置時隨 Inode 的內容更改而更改的。 

因此,更改文件的內容即會更改 mtime 和 ctime,但是文件的 ctime 可能會在 mtime 未發生任何變化時更改 - 在權限更改,但是文件內容沒有變化的情況下。 
ls(1) 命令可用來列出文件的 atime、ctime 和 mtime。
ls -lc filename         列出文件的 ctime
ls -lu filename         列出文件的 atime
ls -l filename          列出文件的 mtime 

    atime不一定在訪問文件之後被修改,因爲:使用ext3文件系統的時候,如果在mount的時候使用了noatime參數那麼就不會更新atime的 信息。而這是加了 noatime 取消了, 不代表真實情況.反正, 這三個 time stamp 都放在 inode 中.若 mtime, atime 修改, inode 就一定會改, 既然 inode 改了, 那 ctime 也就跟著要改了.之所以在 mount option 中使用 noatime, 就是不想 file system 做太多的修改, 而改善讀取效能.
發佈了81 篇原創文章 · 獲贊 15 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章