记录学习笔记、分享资源工具、交流技术思想、提升工作效率

linux上的atime-mtime-ctime

运维 xiaomudk 7年前 (2015-04-09) 2424次浏览 0个评论
文章目录[隐藏]

1.三种时间戳的解释

我们用find的时候经常接触到文件的三个时间atime,mtime,ctime.
使用stat可以查看文件的这三种时间属性:

# stat 2.txt
  File: `2.txt'
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 802h/2050d      Inode: 269731      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2015-04-10 16:53:36.786947163 +0800
Modify: 2015-04-10 16:53:36.786947163 +0800
Change: 2015-04-10 16:55:18.871949766 +0800

有很多人把ctime误认为是文件创建时间。下面是这三种时间的正确解释:

  • atime:即Access time, 是在读取文件时更改的。
  • mtime:即Modified time,是在文件内容修改时更改的。
  • ctime:即Change time, 是文件的inode改变时间(比如写入文件、更改所有者、权限、改变文件名)

2.linux man上以这三种时间戳的解释

具体可以参看下面的介绍,摘自linux man:

The field st_atime is changed by file accesses, for example, by
execve(2), mknod(2), pipe(2), utime(2), and read(2) (of more than
zero bytes).  Other routines, like mmap(2), may or may not update
st_atime.

The field st_mtime is changed by file modifications, for example, by
mknod(2), truncate(2), utime(2), and write(2) (of more than zero
bytes).  Moreover, st_mtime of a directory is changed by the creation
or deletion of files in that directory.  The st_mtime field is not
changed for changes in owner, group, hard link count, or mode.

The field st_ctime is changed by writing or by setting inode
information (i.e., owner, group, link count, mode, etc.).

参考资料: http://man7.org/linux/man-pages/man2/stat.2.html

3.注意

  • ls -l查看文件时,列出的时候是mtime
  • atime不一定文件被访问过修改,因为如果mount的时候使用了noatime参数,atime就不会发生改变了
  • 如果文件被读取,则只会更新atime
  • 如果文件内容发生更改,ctime和mtime都会被更新

发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址