在类 Unix 系统中,文件的时间戳有几个不同的类别,每个时间戳代表了文件生命周期中的不同事件。 "modify 时间"(mtime
)实际上是其中之一,下面是对常见时间戳的详细区分和解释:
1. 修改时间(mtime
- Modify Time)
- 定义:
mtime
是文件内容最后一次被修改的时间。 - 更新:当文件的内容发生改变时(例如,你编辑了文件、追加了内容或替换了部分数据),
mtime
会被更新。 - 影响:
mtime
只会在文件的实际内容改变时更新。即使文件的元数据(如权限、所有者等)发生变化,mtime
也不会改变,除非文件内容本身发生了变化。
2. 访问时间(atime
- Access Time)
- 定义:
atime
是文件最后一次被访问的时间。 - 更新:当文件被打开时(无论是读取、执行还是其他操作),
atime
会被更新。即使文件内容没有变化,只要文件被访问了,atime
就会更新。 - 影响:
atime
更新通常发生在你读取文件时(例如,用cat
命令查看文件内容,或者程序访问该文件),但它的更新可能会受到系统挂载选项(如noatime
)的影响。
3. 变更时间(ctime
- Change Time)
- 定义:
ctime
是文件的元数据(如文件权限、所有者等)最后一次被修改的时间。 - 更新:当文件的元数据(例如文件的权限、所有者、文件名、或者通过
touch
更新的时间戳)发生变化时,ctime
会被更新。注意:ctime
仅在文件元数据被修改时更新,不管文件内容是否被修改。 - 影响:当你改变文件的权限(
chmod
)、所有者(chown
)、或者使用touch
命令更新文件的时间戳时,ctime
会更新。
4. 创建时间(btime
- Birth Time)
- 定义:
btime
是文件在文件系统中被创建的时间。并不是所有文件系统都支持记录文件的创建时间。 - 更新:
btime
在文件创建时被设定,并且无法通过任何命令(如touch
)进行修改。
总结:
mtime
(修改时间):记录文件内容最后一次修改的时间。atime
(访问时间):记录文件最后一次被访问的时间。ctime
(变更时间):记录文件元数据最后一次变更的时间。btime
(创建时间):记录文件被创建的时间,通常不可修改。
touch
命令在默认情况下会更新文件的 atime
和 mtime
,但不会影响 btime
和 ctime
。如果你只是修改文件的时间戳(如使用 touch
),ctime
也会因为元数据的变化而更新。