Linux 文件时间戳说明:atime、mtime 和 ctime
什么时候“改变”不等于“修改”?当我们谈论 Linux 文件的时间戳时。在本指南中,我们将解释系统如何更新它们以及如何自行修改它们。
atime、mtime、ctime 的区别
每个Linux文件都有三个时间戳:访问时间戳(atime)、修改时间戳(mtime)和更改时间戳(ctime)。
访问时间戳是上次读取文件的时间。这意味着有人使用程序查看文件的内容或从中读取一些值。文件中没有任何内容被修改或添加。数据已引用但未更改。
修改时间戳表示上次修改文件内容的时间。程序或进程编辑或操作文件。 “修改”意味着文件中的某些内容已被修改或删除,或者已添加新数据。
更改的时间戳并不表示对文件内容进行的更改。相反,它是与文件相关的元数据发生更改的时间。例如,文件权限更改将更新更改的时间戳。
标准Linux ext4文件系统也在其内部文件系统结构中为文件创建时间戳分配空间,但这尚未实现。有时,这个时间戳被填满,但你不能依赖其中的值。
详细时间戳
Linux 时间戳包含数字而不是日期和时间。这个数字是秒前的数字 Unix时代,即 00 年 00 月 00 日午夜 (1:1970:XNUMX), 协调世界时 (UTC)。 Linux 时间戳中忽略了闰秒,因此它们与实时完全不同。
当Linux需要显示时间戳时,它将秒数转换为日期和时间。这使得人类更容易理解。计算机查看文件的位置和时区指示计算机将秒数转换为日期和时间。它还确保月份使用正确的语言。
那么,一个时间戳可以存储多少秒呢?很多——准确地说是 2,147,483,647。这是一个很大的数字,但这足够吗?如果将其添加到 Unix 时代,然后将其转换为日期和时间,则会得到 19 年 2038 月 03 日星期二凌晨 14:07:XNUMX。在此之前我们需要一个不同的时间戳系统。
显示时间戳
当-l(长列表)选项与ls一起使用时,如下所示, 可以看到修改后的时间戳:
ls -l dp.c
如果您想查看访问时间戳,请使用 -lu(访问时间)选项,如下所示:
ls-lu dp.c
最后,要查看更改的时间戳,可以使用-lc(更改时间)选项;写下以下内容:
ls -lc dp.c