atime ctime mtime

mtime(modify time) :文件内容改变时更改

文件内容最后一次被修改的时间
 
ctime(change time, 而不是create time) :文件重命名,更改属主,权限或者链接时更改
文件状态最后一次被改变的时间
 
atime(access time):是在读取文件或者执行文件时更改
     文件最后一次被读取的时间(只要看了内容这个就变)
 
ls -l  查看mtime
ls -lc 查看ctime
ls -lu 查看atime
stat 可以查看三个timestamp
 
具体什么时候改变呢?请查看下表:
+-------------------------------------------------+
| | timestamps marked for update |
| syscall |---------------------------------|
| | file | parent dir |
|---------------+-------------------+-------------|
| [2]chdir | | |
|---------------| - | - |
| [3]fchdir | | |
|---------------+-------------------+-------------|
| [4]chmod | | |
|---------------| ctime | - |
| [5]fchmod | | |
|---------------+-------------------+-------------|
| [6]chown | | |
|---------------| | |
| [7]fchown | ctime | - |
|---------------| | |
| [8]lchown | | |
|---------------+-------------------+-------------|
| [9]close | - | - |
|---------------+-------------------+-------------|
| [10]creat | atime,ctime,mtime | ctime,mtime |
|---------------+-------------------+-------------|
| [11]execve | atime | - |
|---------------+-------------------+-------------|
| [12]fcntl | - | - |
|---------------+-------------------+-------------|
| [13]ftruncate | | |
|---------------| ctime,mtime | - |
| [14]truncate | | |
|---------------+-------------------+-------------|
| [15]fstat | | |
|---------------| | |
| [16]stat | - | - |
|---------------| | |
| [17]lstat | | |
|---------------+-------------------+-------------|
| [18]fsync | | |
|---------------| - | - |
| [19]fdatasync | | |
|---------------+-------------------+-------------|
| [20]link | ctime | ctime,mtime |
|---------------+-------------------+-------------|
| [21]lseek | - | - |
|---------------+-------------------+-------------|
| [22]mknod | atime,ctime,mtime | ctime,mtime |
|---------------+-------------------+-------------|
| [23]mkdir | atime,ctime,mtime | ctime,mtime |
|---------------+-------------------+-------------|
| [24]mmap | * | - |
|---------------+-------------------+-------------|
| [25]munmap | - | - |
|---------------+-------------------+-------------|
| [26]msync | * | - |
|---------------+-------------------+-------------|
| [27]open | * | * |
|---------------+-------------------+-------------|
| [28]pread | | |
|---------------| | |
| [29]read | atime | - |
|---------------| | |
| [30]readv | | |
|---------------+-------------------+-------------|
| [31]pwrite | | |
|---------------| | |
| [32]write | ctime,mtime | - |
|---------------| | |
| [33]writev | | |
|---------------+-------------------+-------------|
| [34]rename | implementation | ctime,mtime |
|---------------+-------------------+-------------|
| [35]rmdir | - | ctime,mtime |
|---------------+-------------------+-------------|
| [36]readlink | * | - |
|---------------+-------------------+-------------|
| [37]readdir | atime | - |
|---------------+-------------------+-------------|
| readahead | ? | ? |
|---------------+-------------------+-------------|
| [38]symlink | * | * |
|---------------+-------------------+-------------|
| sendfile | ? | ? |
|---------------+-------------------+-------------|
| [39]unlink | - | ctime,mtime |
|---------------+-------------------+-------------|
| [40]utime | ctime | - |
+-------------------------------------------------+
 
 
 
注意:
 
atime的改变是比较频繁的,因为每次cat都会使atime改变,则inode也会改,ctime就也会改,所以为了不使atime频繁修改,我们在挂载ext3文件系统时,常常会加参数noatime,这样就不更新atime啦,这样inode也不会频繁修改啦,大大改善了读取性能。
 

其他扩展:
relatime属性

从kernel2.6.29开始,默认集成了一个 relatime的属性。使用这个特性来挂装文件系统后,只有当mtime比atime更新的时候,才会更新atime。

使用场景:
在文件读操作很频繁的系统中,atime更新所带来的开销很大,所以在挂装文件系统的时候使用noatime属性来停止更新atime。但是有些程序需要根据atime进行一些判断和操作,这个时候relatime特性就派上用场了。其实在事实上,这个时候atime和mtime已经是同一个time,所以可以理解这个选项就是为了实现对atime的兼容才推出的,并不是一个新的时间属性。
使用方法: # mount -o relatime /dir##挂载目录的时候加relatime参数

posted @ 2017-03-27 11:51  meitangyanyan  阅读(277)  评论(0编辑  收藏  举报