上一篇 下一篇 分享链接 返回 返回顶部

了解Linux中时间戳:mtime/ctime和atime

发布人:Minchunlin 发布时间:2021-03-16 09:20 阅读量:2926

在Linux服务器中为系统的每个文件保留了三个时间戳。这些时间戳可以让你发现一个文件最后更新的时间。但它们都是什么意思呢?你又是如何发现一个文件的这些时间的呢?当涉及到目录时,有什么不同吗?

了解atime、ctime和mtime可以回答所有这些问题。这是Unix文件系统跟踪的三个时间戳。如果你需要了解什么东西在什么时候发生了变化的细节,请继续阅读。

什么是三个Unix时间戳?

每个文件都有三个与之相关的时间戳。Linux以Unix时间格式来存储这些时间戳,它测量的是自纪元以来的秒数。这三个时间戳通常被称为atime、ctime和mtime。

mtime是最常见的,通常也是最有用的。它代表修改后的时间。它是文件内容最后写入磁盘的时间。

稍有不同的是ctime,它代表更改时间。这个时间戳可以跟踪元数据的变化,比如所有权和权限。它包括重命名一个文件--至少在典型的现代Linux操作系统上是这样。但是当文件的内容发生变化时,它也会更新,所以它总是和mtime一样最新。

第三个时间戳是atime,它存储了任何人最后一次访问文件的时间。

时间戳如何应用于目录

一个Linux目录,本质上就是该目录中的文件列表。所以在一个目录里面创建一个文件,会更新该目录的mtime。例如,使用ls命令列出目录中的文件,会更新它的访问时间。而且,和文件一样,改变一个目录的权限或名称会更新它的ctime。

创建时间是什么?

你可能会惊讶地发现,Linux根本就没有跟踪创建时间。你可能最初会认为ctime代表创建时间。同样,你可能会认为这是一件非常有用的事情。

许多应用程序通过每次从头创建文件来保存文件。这将使使用创建时间产生误导。

如何查看不同的时间戳

获取时间戳信息的最简单方法是使用ls命令。默认的长格式显示mtime的详细信息。

你可以使用-u标志来显示atime。

最后一行确认这个文件的mtime与atime不同。最后,使用-c标志来查看ctime。

这一次,我们确认这三次都是不同的,而且是正确的:我们修改了文件,然后访问了文件,然后改变了文件,顺序是这样的。

ls的替代方法是stat命令。这条命令显示文件inode的低级细节。它可以让我们更方便地同时检查这三次。它也绕过了不直观的-u标志的问题。下面是同一个文件的输出示例。

如何更新时间戳

touch命令可以改变文件的修改和访问时间。它也是一种创建空文件的方便方法,如果文件还不存在,它就会这样做。

touch tmp

默认情况下,它将mtime和atime设置为当前时间。你可以用 -t 标志设置不同的时间。

touch -t 202103061200 tmp

你也可以用-m和-a标志分别只设置mtime或atime。

touch -t 202103061300 -m tmp

请注意,当我们设置atime或mtime时,ctime总是更新的。

如何根据时间戳查找文件

find命令是另一个作用于时间戳的工具。它可以根据atime、ctime或mtime来过滤文件。例如

find . -amin 15

将找到15分钟前访问的文件,而。

find . -mtime -2

会发现最近两天内修改的文件。

Linux会对每个文件进行三次跟踪

最常引用的文件时间戳是mtime。例如,这是文件列表显示的日期和时间。但是其他两个时间戳也是很有用的,前提是你要明白它们所指的是什么。特别是,一定要记住,ctime代表更改时间,而不是创建时间。

诸如 touch 和 stat 等命令是 Linux 命令行工具箱中有用的成员。这些命令会让你快速创建新文件,从而增强你的Linux工作流程。

目录结构
全文