当前位置:首页 > 技术文章 > 正文内容

原来只能这样查看Linux中文件的创建时间

douba34周前 (08-03)技术文章13

Linux中没有命令可以直接查看

Linux系统与之前的Unix系统一样,都为每个文件维护三种不同的时间戳。然而,这些时间戳的语义常常让用户感到意外,而且它们并没有提供用户经常想要知道的信息。

Unix文件的时间戳,长期以来被POSIX所确立,被称为"atime"、"ctime"和"mtime"。atime时间戳旨在记录文件最后一次被访问的时间。然而,这一信息几乎从未被使用,且维护起来相当麻烦;Ingo Molnar曾将atime称为"有史以来最愚蠢的Unix设计想法"。因此,在当代系统中,atime通常被禁用,或至少回滚到更新不频繁的"relatime"模式。相反,mtime则有一定的意义;它告诉用户文件最后一次被修改的时间。因为修改文件需要写入,所以更新这个时间通常有用的,而且也是我们经常使用的。

那么剩下的ctime就有点奇怪了。不深入了解的用户可能会将ctime解释为"创建时间",但存储在那里的不是这个信息;相反,每当一个文件的元数据发生变化时,ctime就会更新。显然,这个信息的主要使用者是古老的dump工具,它想要知道文件的元数据是否发生了变化(这样的信息必须在增量备份中保存),但文件数据本身没有变化,不需要再次保存。多年来,使用dump的用户数量肯定已经减少了,以至于ctime最大的作用可能是混淆真正只想要知道文件创建时间的用户。

那么用户在哪里找到创建时间呢?他们找不到:Linux系统不存储该时件,也不提供应用程序访问它的接口。

然而,这种情况可能会改变。一些较新的文件系统(例如Btrfs和ext4)被设计有保存文件创建时间的空间。


文件系统有单独实现

后面一些文件系统里面单独实现了,就是给加了一个字段。下面的问答中,列举了常见的文件系统中添加的相应字段,比如ext4中的crtime。但是可以看到,我们现在经常使用的xfs里面没有添加这个字段。也就是说,在ext4中可以通过一些方法来得到文件的创建时间,但是xfs就没有办法了。

https://unix.stackexchange.com/questions/7562/what-file-systems-on-linux-store-the-creation-time/40093#40093

ext4文件系统中查看文件的创建时间

ext4的需要使用debugfs来看。先使用ls -i 文件名 来得到文件的inode

使用df -hT 文件名 来得到文件所在的分区

然后就可以使用 debugfs -R 'stat <inode>' 分区 来得到ext4文件系统额外记录的信息了。对比stat的输出,可以看到debugfs的输出里面ctime,atime,mtime都是一样的,然后多了crtime。


相关文章

Linux基础知识之查看io(查看linux的io使用情况)

1.查看占用IO高的磁盘:iostat -X -d -k 1 102.查看占IO的pid:pidstat -d3.查看pid进程:ps -aux | grep pid4.查看占用IO高的pid:iot...

Linux 的这几种搜索方式,你都会了吗?

1.find 命令find 命令是用来在给定的目录下查找符合给定条件的文件语法格式:find [查找起始路径] [查找条件] [处理动作](1)根据名称查找:find [查找起始路径] -name 文...

linux 查看当前应用内存状况,以及内存参数含义

1、查看进程号ps -ef | grep tomcat2、查看当前内存分配,200ms打印一次jstat -gc 进程号 200 1jstat -gc 34480 200 1 S0C S1C...

Linux环境中FTP服务的安装与配置(linux服务器安装ftp命令)

简介:FTP ( 文件传输协议 ) 是 互联网常用的网络协议之一 , 它为系统提供了通过网络与远程服务器进行文件传输的简单方法,多个Web站点可以共享一个IP地址。Linux下ftp服务可以通过搭建v...

第五章 Linux常用服务介绍-5.2 FTP服务

1)ftp服务器安装和配置FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文本传输协议”,通常我们就叫它FTP服务。用于Internet上的控制文件的双...

Linux文件操作高频使用命令(linux文件操作函数)

0.新建操作:mkdir abc #新建一个文件夹 touch abc.sh #新建一个文件1.查看操作查看目录:ll #显示目录文件详细信息 du -h 文件/目录 #查看大小 pwd #显示路径查...