首先可以使用 stat 命令来查询文件的 inode 信息,其中包括 ctime atime mtime
[root@localhost ~]# stat sort2.txt
File:‘sort2.txt’Size: 32 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 74004191 Links: 1
Access: (0644/-rw-r--r--) Uid: (0/ root) Gid: (0/ root)
Access: 2015-08-24 11:40:30.788452530 +0800
Modify: 2015-08-24 11:40:23.892452926 +0800
Change: 2015-08-24 11:40:23.892452926 +0800
Birth: -
理解文件的时间类型
Access time,atime
是在读取文件或者执行文件时更改的 任何对 inode 的访问都会使此处改变。
Modified time,mtime
是在写入文件时 随文件内容的更改而更改的。
Change time,ctime
是在写入文件、更改所有者、权限或链接设置 时随 Inode 的内容更改而更改的。只要 stat 出来的内容发生改变就会发生改变。mtime 的改变必然导致 ctime 的改变。
理解目录的时间类型
Access time,atime
是在读取文件或者执行文件时更改的(所以我们只 cd 进入一个目录然后 cd .. 不会引起 atime 的改变,但 ls 一下就不同了)。
Modified time,mtime
在文件夹中有文件的新建、删除才会改变(如果只是改变文件内容不会引起目录 mtime 的改变,换句话说如果 ls - f 的结果发生改变 mtime 就会被刷新。这里可能有人要争论了:我进入 dd 这个文件夹 vi 了一个文件然后退出,前后 ls - f 的结果没有改变但是文件夹的 mtime 发生改变了……这点请主意 vi 命令在编辑文件时会在本文件夹下产生一 个 ”.file.swp” 临时文件,该文件随着 vi 的退出而被删除……这就导致了 mtime 的改变 [Auxten:p]不信你可以用 nano 修改文件来试验)。
Change time,ctime
ctime 基本同文件的 ctime,其体现的是 inode 的 change time。
另外补充一点:mount -o noatime(mount -o remount,atime / 可以在线重新挂载根目录)
可以选择不记录文件的 atime 的改变,这意味着什么呢?当你创建了这个文件后 这个文件的 atime 就定格了,除非你用 touch 或者 touch - a 强制刷新文件的 atime。这样在可以在一定程度上提升文件系统的读写性能,特别是网站这种系统中在 fstab 里面加上 noatime 是个好主意 O(∩_∩)O, 列如
/dev/sda3 / ext3 noatime 0 1
ls -lc filename # 列出文件的 ctime (ls -l --time=ctime)
ls -lu filename # 列出文件的 atime (ls -l --time=atime)
ls -l filename # 列出文件的 mtime (ls -l --time=mtime)