atime mtime ctime

Linux系統文件有三個主要的時間屬性,


atime(access time)訪問文件時間

mtime(modify time)修改文件內容時間

ctime(change time)修改文件屬性時間


   mtime和ctime的區別在於,只有修改了文件的內容,纔會更新文件的mtime,而對文件更名,修改文件的屬主等操作,只會更新ctime。


查看時間屬性命令 stat 

stat filename 


ls命令查看:

ls -lc filename 列出文件的 ctime

ls -lu filename 列出文件的 atime

ls -l filename 列出文件的 mtime



關於relatime

根據 POSIX 的規定,Linux 以及 Unix 等系統都要爲系統中的所有文件記錄文件的最後訪問時間,叫做 atime。對於某些應用來說,atime 是很重要的信息。比如一些郵件程序會通過郵件文件的 atime 來判斷此郵件是否已讀;一些備份和清理程序會根據文件在多長時間內沒有被訪問,來決定是否對文件進行清理和歸檔。

但是對於大部分應用來說,atime 信息並不重要,而系統更新 atime 所帶來的開銷卻是巨大的。因爲系統每訪問一次某個文件,就要對這個文件更新一個新的 atime 時間值,都要引起一個對磁盤的寫操作,這些寫操作會使磁盤更多的處於忙碌狀態,這對系統性能(因爲磁盤在完成一個寫操作的時候會暫時阻止其他的寫操作)以及電量消耗都是不利的。

所以,如果用戶可以確定自己的應用不會使用到文件的 atime 信息,則可以禁止 atime 的更新。對於整個文件系統,mount 命令的 noatime 選項可以使整個文件系統下的文件都不會進行 atime 的更新。可以使用如下命令:

 mount -o remount,noatime  /

也可以將 noatime 選項寫在 /etc/fstab 文件裏。

如果不想對整個文件系統禁止 atime 更新,而只是想針對某些文件或目錄禁止,則可以通過 chattr 命令來完成,如下面的命令:

 chattr -R +A /some/dir

可以對某個目錄及其下面的所有文件禁止 atime 更新。

除了 noatime,還有兩個和 atime 相關的文件系統選項。一個是 nodiratime,此選項只針對目錄禁止進行 atime 更新(注意 noatime 對文件和目錄都生效,是 nodiratime 的超集)。這樣就可以使 ls這樣的命令不會更新目錄的 atime 值。

對於某些用戶某些應用,atime 信息可能是必要的,比如一開始提到的郵件程序和備份工具。如果完全禁止 atime 更新會使這些程序無法正常工作。針對這種情況,Linux 在內核 2.6.20 中添加了一個新的 mount 選項 relatime(relative atime 的意思)。relatime 的意思是訪問文件時,僅在 atime 早於文件的更改時間時對 atime 進行更新。在內核 2.6.24 中,又對 relatime 進行了擴展,在訪問文件時,當 atime 已經超過某個時間(例如一天)沒有更新,就對 atime 進行更新。

目前 relatime 還沒有被廣泛的應用,因爲許多 Linux 發行版的內核版本和 mount 命令還沒有支持這個選項。如果你的系統支持 relatime,可以使用如下命令啓用:

 mount -o remount,relatime  /


下圖可以即是使用了relatime的結果,快速多次vi ,atime沒有被更改。

wKioL1UJnTmTmm7kAAJN_SIGQBE239.jpg




relatime 資料

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