1.每個(gè)文件內(nèi)節(jié)點(diǎn)和目錄內(nèi)節(jié)點(diǎn)都有三個(gè)與之相關(guān)的時(shí)間戳:
ctime — 最后一次修改內(nèi)節(jié)點(diǎn)狀態(tài)的時(shí)間
mtime — 最后一次修改文件(或者目錄)數(shù)據(jù)的時(shí)間
atime — 最后一次訪問文件(或者目錄)數(shù)據(jù)的時(shí)間
你可以通過stat來查看文件的mtime,ctime,atime等屬性,也可以通過ls命令來查看,具體如下:
stat filename
2.ls命令查看:
ls -lc filename 列出文件的 ctime
ls -lu filename 列出文件的 atime
ls -l filename 列出文件的 mtime
3.atime更新的一些問題及解決方法
如果啟用了 atime 更新,因?yàn)樵?nbsp;GFS2 和其它 Linux 文件系統(tǒng)中這是默認(rèn)設(shè)置,那么每次在讀取文件時(shí)都需要更新其內(nèi)節(jié)點(diǎn)。
根據(jù) POSIX 的規(guī)定,Linux 以及 Unix 等系統(tǒng)都要為系統(tǒng)中的所有文件記錄文件的最后訪問時(shí)間,叫做 atime。對(duì)于某些應(yīng)用來說,atime 是很重要的信息。比如一些郵件程序會(huì)通過郵件文件的 atime 來判斷此郵件是否已讀;一些備份和清理程序會(huì)根據(jù)文件在多長時(shí)間內(nèi)沒有被訪問,來決定是否對(duì)文件進(jìn)行清理和歸檔。
但是對(duì)于大部分應(yīng)用來說,atime 信息并不重要,而系統(tǒng)更新 atime 所帶來的開銷卻是巨大的。因?yàn)橄到y(tǒng)每訪問一次某個(gè)文件,就要對(duì)這個(gè)文件更新一個(gè)新的 atime 時(shí)間值。我這里所說的訪問,并不是從用戶角度來看的打開一個(gè)文件,而是系統(tǒng)底層的每一次 open 和 read 等操作。設(shè)想一下,我們每對(duì)文件進(jìn)行一次讀操作,都要引起一個(gè)對(duì)磁盤的寫操作,即使我們要讀的內(nèi)容已經(jīng)存在于內(nèi)存的 Page Cache 中,還是要對(duì)磁盤進(jìn)行一個(gè)寫操作。這樣引起的開銷確實(shí)是巨大的,這些寫操作會(huì)使磁盤更多的處于忙碌狀態(tài),這對(duì)系統(tǒng)性能(因?yàn)榇疟P在完成一個(gè)寫操作的時(shí)候會(huì)暫時(shí)阻止其他的寫操作)以及電量消耗都是不利的。
使用 noatime 掛載用來降低 atime 更新效果的方法
使用 noatime 掛載,可在那個(gè)文件系統(tǒng)中禁用 atime 更新。
當(dāng)掛載文件系統(tǒng)時(shí),可指定 Linux 掛載選項(xiàng) noatime,它可在那個(gè)文件系統(tǒng)中禁用 atime 更新。
用法
mount BlockDevice MountPoint -o noatime
示例:mount /dev/sdb5 /home/sdb5 -o noatime
也可以將 noatime 選項(xiàng)寫在 /etc/fstab 文件里。
如果不想對(duì)整個(gè)文件系統(tǒng)禁止 atime 更新,而只是想針對(duì)某些文件或目錄禁止,則可以通過 chattr 命令來完成,如下面的命令:
chattr -R +A /some/dir
可以對(duì)某個(gè)目錄及其下面的所有文件禁止 atime 更新