當(dāng)你同熟練的UNIX用戶(hù)進(jìn)行交談時(shí),你經(jīng)常會(huì)聽(tīng)到他們傲慢地講出術(shù)語(yǔ)“改變時(shí)間(change time)”和“修改時(shí)間(modification time)”。對(duì)于許多人(和許多字典而言),改變和修改是相同的。這里會(huì)有什么不同那?
改變和修改之間的區(qū)別在于是改某個(gè)組件的標(biāo)簽還是更改它的內(nèi)容。如果有人說(shuō)chmod a-w myfile,那么這是一個(gè)改變;如果有人說(shuō)echo foo >> myfile,那么
這是一個(gè)修改。改變是文件的索引節(jié)點(diǎn)發(fā)生了改變;修改是文本本身的內(nèi)容發(fā)生了變化。[文件的修改時(shí)間也叫時(shí)間標(biāo)志 (timestamp).]
只要討論改變時(shí)間和修改時(shí)間,就不可能不提到“訪問(wèn)時(shí)間(access time)”.訪問(wèn)時(shí)間是文件最后一次被讀取的時(shí)間。因此閱讀一個(gè)文件會(huì)更新它的訪問(wèn)時(shí)間,當(dāng)它的改變時(shí)間并沒(méi)有變化(有關(guān)文件的信息沒(méi)有被改變),它的修改時(shí)間也同樣如此(文件本身沒(méi)有被改變)
有時(shí),在許多地方改變時(shí)間或者“ctime”被錯(cuò)誤地寫(xiě)成“創(chuàng)建時(shí)間”,包括某些UNIX參考手冊(cè)。不要相信他們
下面是我man出來(lái)的內(nèi)容,僅供參考!
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應(yīng)該是mtime。
touch后,文件的三個(gè)時(shí)間應(yīng)該都會(huì)改變,可以試一試。
問(wèn)題描述
文件的 ctime、mtime、atime 之間有什么區(qū)別?
配置信息
解決方法
文件的 Access time,atime 是在讀取文件或者執(zhí)行文件時(shí)更改的。
文件的 Modified time,mtime 是在寫(xiě)入文件時(shí)隨文件內(nèi)容的更改而更改的。
文件的 Create time,ctime 是在寫(xiě)入文件、更改所有者、權(quán)限或鏈接設(shè)置時(shí)隨 Inode 的內(nèi)容更改而更改的。
因此,更改文件的內(nèi)容即會(huì)更改 mtime 和 ctime,但是文件的 ctime 可能會(huì)在 mtime 未發(fā)生任何變化時(shí)更改 - 在權(quán)限更改,但是文件內(nèi)容沒(méi)有變化的情況下。
ls(1) 命令可用來(lái)列出文件的 atime、ctime 和 mtime。
ls -lc filename 列出文件的 ctime
ls -lu filename 列出文件的 atime
ls -l filename 列出文件的 mtime
atime不一定在訪問(wèn)文件之后被修改,因?yàn)椋菏褂胑xt3文件系統(tǒng)的時(shí)候,如果在mount的時(shí)候使用了noatime參數(shù)那么就不會(huì)更新atime的信息。而這是加了 noatime 取消了, 不代表真實(shí)情況.反正, 這三個(gè) time stamp 都放在 inode 中.若 mtime, atime 修改, inode 就一定會(huì)改, 既然 inode 改了, 那 ctime 也就跟著要改了.之所以在 mount option 中使用 noatime, 就是不想 file system 做太多的修改, 而改善讀取效能.