在 Linux 系统上处理文件经常会遇到文件的三个时间,分别是 mtimectimeatime,那它们都是表示什么意思呢,当对文件进行哪些操作会改变文件的这些时间呢,本篇对其进行介绍。

mtime

mtime 又称作修改时间(modification time),表示文件最后被修改的时间。当你改变文件的内容时,文件的 mtime 将会发生改变。

查看一个文件的    mtime ,可以使用如下:

1
2
3
4
5
6
7
8
9
# ls 命令查看文件 107 时显示的时间默认就是 
ls -l 107
# -rwxr----x 1 jinzhongxu jinzhongxu 6 Jul 19 16:16 107

# 查看时间到纳秒
ls -l --full-time 107
# or
ls -l --time-style=full-iso 107
# -rwxr----x 1 jinzhongxu jinzhongxu 6 2022-07-19 16:16:32.307009235 +0800 107

ctime

ctime 又称作更正时间(change time)或状态时间、属性时间,表示文件的属性(如文件内容、所属者、所属组等等)发生更正的时间。当 mtime 发生改变时 ctime 也会发生改变,另外,当文件的权限、名字、位置发生改变也会导致文件的 ctime 改变。

查看一个文件的 ctime,可以使用如下:

1
2
3
4
5
6
ls -l --time=ctime 107
#-rwxr----x 1 jinzhongxu jinzhongxu 6 Jul 19 16:18 107

# 查看时间到纳秒
ls -l --full-time --time=ctime 107
# -rwxr----x 1 jinzhongxu jinzhongxu 6 2022-07-19 16:18:54.616382216 +0800 107

atime

atime 又称为访问时间(access time),表示文件的内容被应用程序或某些命令(如 grepcat 等等)读取时文件的 atime 发生改变。

查看一个文件的 atime,可以使用如下:

1
2
3
4
5
6
ls -l --time=atime 107
# -rwxr----x 1 jinzhongxu jinzhongxu 6 Jul 19 16:17 107

# 查看时间到纳秒
ls -l --full-time --time=atime 107
# -rwxr----x 1 jinzhongxu jinzhongxu 6 2022-07-19 16:17:08.335356831 +0800 107

三者关系

从上面的介绍可以知道,

  1. atime 可以单独改变,而 ctimemtime 保存不变;

  2. ctime 可以单独改变,而不会影响 atimemtime改变;

  3. mtime 改变会影响 ctimeatime 改变;

参考文献

  1. Knowing the difference between mtime, ctime and atime - Nicolas Bouliane
  2. linux ls查看文件时间/大小_有石为玉的博客-CSDN博客_ls查看文件创建时间
  3. ls命令的修改时间显示到秒_shift0ogg的技术博客_51CTO博客