Linux中的文件时间戳记:atime,mtime,ctime。 澄清说明

让我们看看Linux中有哪些不同类型的文件时间戳,如何查看文件的时间戳以及如何更改时间戳。

在Linux中,每个文件都有一些时间戳,这些时间戳提供了有关何时修改或更改文件或其属性的一些重要信息。 让我们详细了解一下这些时间戳。

什么是Linux时间戳?

Linux上的任何文件通常都有三个时间戳:

  • atime-访问时间
  • mtime-修改时间
  • ctime-更改时间

一次

atime表示访问时间。 该时间戳告诉您上次访问文件的时间。 访问时,这意味着您是否使用过cat,vim,less或其他工具来读取或显示文件的内容。

时光

mtime代表修改时间。 此时间戳告诉您上次修改文件的时间。 这意味着文件的内容已通过编辑文件进行了更改。

时间

ctime表示状态更改的时间。 该时间戳告诉您文件的属性和元数据上次更改的时间。 元数据包括权限,所有权,文件名和位置。

如何查看文件的时间戳?

您可以使用stat命令查看文件的所有时间戳。 使用stat命令非常简单。 您只需要提供一个文件名。

stat <filename>

结果将是这样的:

stat andreyex.txt 
  File: andreyex.txt
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: 10305h/66309d	Inode: 11936465    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/andreyex)   Gid: ( 1000/andreyex)
Access: 2018-10-07 23:10:25.134647523 +0530
Modify: 2018-10-07 23:10:25.134647523 +0530
Change: 2018-10-07 23:10:25.134647523 +0530
 Birth: -

您可以在上面的输出中看到所有三个时间戳(访问,修改和更改)。 这三个时间戳都是相同的,因为我们只是使用touch命令创建了这个空文件。

现在让我们更改这些时间戳。

如果我们使用less命令读取文件,则它只会更改访问时间,因为文件的内容和元数据保持不变。

$ less andreyex.txt 
$ stat andreyex.txt 
  File: andreyex.txt
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: 10305h/66309d	Inode: 11936465    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/andreyex)   Gid: ( 1000/andreyex)
Access: 2018-10-07 23:15:12.847568584 +0530
Modify: 2018-10-07 23:10:25.134647523 +0530
Change: 2018-10-07 23:10:25.134647523 +0530
 Birth: -

现在,让我们更改修改时间。 我们将使用cat命令向该文件添加新文本。 这样可以防止访问时间更改。

$ cat >> andreyex.txt 
demo text
^C
$ stat andreyex.txt 
  File: andreyex.txt
  Size: 10        	Blocks: 8          IO Block: 4096   regular file
Device: 10305h/66309d	Inode: 11936465    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/andreyex)   Gid: ( 1000/andreyex)
Access: 2018-10-07 23:15:12.847568584 +0530
Modify: 2018-10-07 12:32:34.751320967 +0530
Change: 2018-10-07 12:32:34.751320967 +0530
 Birth: -

你有没有发现奇怪的事情? 您更改了文件并希望mtime更改,但同时也更改了ctime。

请记住,ctime总是更改mtime,这是因为在用户控制更改时间的同时,ctime是由系统控制的。 它表示何时最后一次更改数据块或文件元数据。 如果更改文件,则数据块也会更改,因此ctime也会更改。

您只能通过使用CHMOD或chgrp命令更改文件许可权来更改ctime,但不能在不更改ctime的情况下修改mtime。

您也无法以常规方式更改过去的ctime。 这是一种安全功能,因为它会告诉您上次更改文件的时间。 即使有人更改了mtime并在过去出于恶意目的对其进行了设置,ctime也会指示mtime更改的实际时间。

请记住:ctime将始终通过更改mtime来更改。

文件时间戳有什么用?

这有助于分析。 在某些情况下,您需要参考文件的时间戳。 例如,您可以查看文件最近是否已更改,以及何时应该更改。

我们最喜欢的方法之一是使用mtime查找应用程序日志文件。 运行该应用程序,然后转到该应用程序的父目录,然后搜索最近几分钟内已更改的文件。

上面我们已经向您显示了它也可以帮助分析谁访问了文件或恶意修改了文件。 在这些情况下,时间戳记起着重要的作用。

我怎么知道最初创建文件的时间?

您是否注意到stat命令输出的最后一行? 它说“出生”。 您可以猜测文件“出生”(或更精确地创建)时时间戳表所代表的含义。

实际上,还有另一个时间戳称为创建时间(cr)。 并非所有文件系统都支持此时间戳。 Ext4是流行的Linux文件系统之一,尽管它支持创建时间戳,但是stat命令当前无法显示它。 也许stat命令的未来版本将在“出生”部分中显示创建时间戳。

请禁用您的广告拦截器或将此网站列入白名单!

Sidebar