Linux檔案時間解析

來源:互聯網
上載者:User

標籤:style   blog   http   使用   strong   檔案   

Linux檔案時間解析

寫這篇小文章的緣由是之前做過一個項目,需要定期將檔案轉走,也許專業點的名詞叫rollover。那麼這就需要判斷一個檔案是否到了轉走的時間,從而就需要知道檔案的建立時間。 Linux檔案分為狀態改動時間ctime,修改時間mtime以及訪問時間atime,那麼它們是怎麼變化的呢?需要注意這個ctime可不是建立時間,是Change Time的縮寫,修改時間那就是檔案修改的時間Modify Time,訪問時間就是檔案讀取的時間Access Time。其實不然,這裡面大有玄機。建立一個檔案touch test,寫入內容“abc”。我們可以通過stat test命令來查看檔案的這三個時間。剛建立,可以發現三個時間是一樣的。:



1.狀態改動時間

實際上,所謂狀態改動,其實就是inode資訊改動的時間。那麼具體哪些操作會導致inode資訊改動呢?我們知道linux檔案inode中包含的資訊有檔案許可權,訪問時間,建立時間資訊,檔案大小,連結數,檔案所屬使用者等資訊,那麼更改這些資訊會導致ctime發生變化。

  • 我們改變檔案test的許可權,會導致ctime變化。接著圖之前的例子,我們執行chmod -w test, 再次執行stat test可以看到結果如所示,狀態改動時間ctime發生了變化,而修改時間和訪問時間不變。同理,我們使用chown命令修改檔案所屬使用者和組等資訊,也會導致ctime發生變化。此外建立永久連結如ln test test1,修改檔案內容如echo ‘hehe‘ >> test都會使得ctime發生變化(需要注意的是,建立符號串連ln -s test test2並不會導致ctime變化,因為軟串連相當於是另外一個檔案,並不影響本身這個檔案了)。


  • 那麼總結起來,修改狀態改動時間ctime的情況有如下幾種情況:
      a.修改檔案許可權或者所有者、連結數等屬性,如chmod,chown,ln等操作(不包括ln -s)。
  •   b.修改檔案內容。(當然也會改變mtime,如果是使用vim等工具開啟檔案再修改,同時也會修改atime。如果只是用 echo ‘hehe‘ >> test 這個命令進行追加寫入,則只會修改ctime,mtime,不影響atime)。

2.修改時間

修改時間我們很容易想成檔案有修改才改變,那其實也的確是這樣,只是這個修改是指修改的操作,不是說檔案內容不變它就不改變,而是需要檔案沒有進行過寫操作。比如我們用命令vim test開啟檔案,在test中加一個字元‘d‘,然後再刪除字元‘d‘,這個時候用:w儲存檔案,我們會發現雖然test檔案內容沒有變化,但是它的修改時間mtime已經更新。當然這個操作本身是先開啟檔案再修改的,所以atime也會更新, ctime肯定也要更新。


3.訪問時間

只要我們是讀取檔案,都會修改訪問時間atime。比如more, cat命令等。為解決檔案讀取頻繁的系統中atime更新所帶來的開銷問題,所以很多SA都在掛裝檔案系統的時候使用noatime屬性來停止更新atime,這樣可以把atime當做檔案建立時間來使用。但是有些程式需要根據atime進行一些判斷和操作,所以Linux在2.6新版本的核心就推出了一個relatime特性。使用這個特性來掛裝檔案系統後,只有當mtime比atime更新的時候,才會更新atime。也就是說單純的more,cat命令並不會更新atime,只有當你修改過檔案後再次讀取才會更新atime。

使用了relatime特性後,比如你使用echo ‘hehe‘ >> test命令修改test檔案內容,剛剛寫入完,可以發現ctime和mtime都更新了,但是atime還沒有更新。此時,你使用cat test或者more等命令開啟test檔案,這樣就會更新atime了。如所示




4.參考資料
  • linux C一站式編程之ext2檔案系統
  • linux檔案三種時間

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.