首先可使用stat 命令来查询文件的inode信息,其中包括ctime atime mtimenode
Mtime:文件内容改变,ctime文件的状态改变,如chmod权限等。web
调整mtime,ctime会变。调整ctime,mtime不必定变化。shell
1.文件的容易理解:性能
Access time,atime 是在读取文件或者执行文件时更改的任何对inode的访问都会使此处改变。
Modified time,mtime 是在写入文件时随文件内容的更改而更改的。
Change time,ctime 是在写入文件、更改全部者、权限或连接设置时随 Inode 的内容更改而更改的。只要stat出来的内容发生改变就会发生改变。mtime的改变必然致使ctime的改变。网站
mtime (modification time ):在写入文件时随文件内容的更改而更改的时间。咱们用ls -l看到的时间,就是mtimespa
ctime (status time):是在写入文件、更改全部者、权限或连接设置时随Inode的内容更改而更改的时间。至关于ls -l –time=ctime所看到的时间orm
atime (access time):读取文件或者执行文件时更改的时间。也就是用ls -l –time=atime看到的时间排序
modification time (mtime,修改时间):这个时间指的是文件内容修改的时间,而不是文件属性的修改,当数据内容修改时,这个时间就会改变,用命令ls -l默认显示的就是这个时间:索引
2)status time (ctime,状态时间):当一个文件的状态改变时,这个时间就会改变,例如更改了文件的权限与属性等,它就会改变。事件
3)access time (atime,访问时间):当读取文件内容时,就会更改这个时间,例如使用cat 去读取/etc/man.config,那么该文件的atime就会改变。
2.文件夹的:
文件夹的 Access time,atime 是在读取文件或者执行文件时更改的(咱们只cd进入一个目录而后cd ..不会引发atime的改变,但ls一下就不一样了)。
文件夹的 Modified time,mtime 是在文件夹中有文件的新建、删除才会改变(若是只是改变文件内容不会引发mtime的改变,换句话说若是ls -f <directory>的结果发生改变mtime就会被刷新。这里可能有人要争论了:我进入dd这个文件夹vi了一个文件而后退出,先后ls -f <directory>的结果没有改变可是文件夹的mtime发生改变了……这点请主意vi命令在编辑文件时会在本文件夹下产生一 个".file.swp"临时文件,该文件随着vi的退出而被删除……这就致使了mtime的改变 [Auxten:p]不信你能够用nano修改文件来试验)。
文件夹的 Change time,ctime 基本同文件的ctime,其体现的是inode的change time。
这里还要补充一点:mount -o noatime(mount -o remount,atime / 能够在线从新挂载根目录) 能够选择不记录文件的atime的改变,这意味着什么呢?当你建立了这个文件后这个文件的atime就定格了,除非你用touch或者touch -a强制刷新文件的atime。这样在能够在必定程度上提高文件系统的读写性能,特别是网站这种系统中在fstab里面加上noatime是个好主意 O(∩_∩)O
使用find命令时,常为其中的atime/ctime/mtime感到困惑,一直没完全弄个明白,今天仔细看了以上两篇文章,总算有所领悟,总结以下:
1、含义:
文件的 Access time,atime 是在读取文件或者执行文件时更改的;
文件的 Modified time,mtime 是在写入文件时随文件内容的更改而更改的;
文件的 Create time,ctime 是在写入文件、更改全部者、权限或连接设置时随 Inode 的内容更改而更改的。
2、文件各类事件标记的显示方法
ls -lc filename 列出文件的 ctime
ls -lu filename 列出文件的 atime
ls -l filename 列出文件的 mtime
三、某网友的实际试验结果:
修改文件,-mtime 改了, -ctime 也会改.
访问文件,-atime 改了, -ctime 没变.
chown, chgrp, chmod,mv, 都会使 -ctime 改变,但不影响 -atime 和-mtime.
touch 能够改 -mtime and/or -atime,但 touch -a 只改访问时间时,-ctime也改了.
touch -m 改修改时间时,-ctime固然也改了
改变文件或目录时间命令touch
参数说明
-a :修改atime
-m :修改mtime
-c :仅修改文件的时间(三个时间一块儿修改),若该文件不存在则不创建新的文件
-d :后面能够接想修改的日期而不用目前的日期,也可使用 –date=”日期或时间”
-t :后面能够接想修改是时间而不用目前的时间,格式为[YYMMDDhhmm]
“改变时间(change time)”和“修改时间(modification time)”。
当你同熟练的UNIX用户进行交谈时,你常常会听到他们傲慢地讲出术语“改变时间(change time)”和“修改时间(modification time)”。对于许多人(和许多字典而言),改变和修改是相同的。这里会有什么不一样那?
改变和修改之间的区别在因而改某个组件的标签仍是更改它的内容。若是有人说chmod a-w myfile,那么这是一个改变;若是有人说echo foo >> myfile,那么
这是一个修改。改变是文件的索引节点发生了改变;修改是文本自己的内容发生了变化。[文件的修改时间也叫时间标志
(timestamp).]
只要讨论改变时间和修改时间,就不可能不提到“访问时间(access
time)”.访问时间是文件最后一次被读取的时间。所以阅读一个文件会更新它的访问时间,当它的改变时间并无变化(有关文件的信息没有被改变),它的
修改时间也一样如此(文件自己没有被改变)
有时,在许多地方改变时间或者“ctime”被错误地写成“建立时间”,包括某些UNIX参考手册。不要相信他们
Linux系统文件有三个主要的时间属性,分别是ctime(change time, 而不是create time), atime(access time), mtime(modify time)。后来为了解决atime的性能问题,还引入了一个relatime的属性,下面一一解释。
ctime, 不少朋友把它理解成create time,包括不少误导人的书籍也是这么写。实际上ctime是指change time。
mtime, 就是modify time。
mtime和ctime的区别在于,只有修改了文件的内容,才会更新文件的mtime,而对文件改名,修改文件的属主等操做,只会更新ctime。
举例说明: 对文件进行mv操做,mtime不变,ctime更新;编辑文件内容,mtime和ctime同时修改。其余操做的影响,能够本身试验。可是我发现对文件执行touch操做,会同时修改mtime和ctime,因此具体修改哪一个时间,还取决于不一样命令本身的实现;
atime, 这个就是每次查看文件内容的时候会更新。好比cat操做,而ls操做是不会更新的。
你能够经过stat来查看文件的mtime,ctime,atime等属性,也能够经过ls命令来查看,具体以下:
ls -lc filename 列出文件的 ctime
ls -lu filename 列出文件的 atime
ls -l filename 列出文件的 mtime
从kernel2.6.29开,还默认集成了一个relatime的属性。这个功能我我的理解是为了解决atime的兼容性问题。由于在文件读操做很频繁的系统中,atime更新所带来的开销很大,因此不少SA都在挂装文件系统的时候使用noatime属性来中止更新atime。可是有些程序须要根据atime进行一些判断和操做,因此Linux就推出了一个relatime特性。
使用这个特性来挂装文件系统后,只有当mtime比atime更新的时候,才会更新atime。事实上,这个时候atime和mtime已是同一个东西了。因此这个选项就是为了实现对atime的兼容才推出的。并非一个新的时间属性。使用方法就是经过mount -o relatime /dir来挂装目录。
1> mount 使用选项noatime能够改善读取性能2> 使用 ls 来对文件时间属性排序ls -lc 列出文件的ctime , 排序ls -ltcls -lu 列出文件的atime , 排序ls -ltuls -l 所列出来的时间是mtime 列出文件的mtime并排序 ls -lt3> find找出一天以内被修改过的文件,使用ctime 由于有可能改变属性的操做 会改变ctime, 而不会改变mtimeshell > find ./ -ctime -1