echox的答案是有效的,但我想添加有关文件创建时间的信息。
文件系统支持
某些文件系统支持索引节点中有关创建时间(或出生时间)的其他条目。我知道ext4支持此功能,还支持JFS和BTRFS。
但是,大多数工具和API尚未更新以读取此额外信息。因此,即使它可能存在,也无法访问。
例如,在Ubuntu 12.04 LTS上,我今天创建的文件得到以下内容:
$ echo Just another test > /tmp/mytest
$ sleep 3
$ touch /tmp/mytest
$ sleep 2
$ cat /tmp/mytest > /dev/null
$ stat /tmp/mytest
[...]
Access: 2012-06-05 13:33:44.279774711 +0200
Modify: 2012-06-05 13:33:34.611893317 +0200
Change: 2012-06-05 13:33:34.611893317 +0200
Birth: -
$ sudo debugfs -R 'stat /tmp/mytest' /dev/sda1
[...]
ctime: 0x4fcdee8e:91e30114 -- Tue Jun 5 13:33:34 2012
atime: 0x4fcdee98:42b417dc -- Tue Jun 5 13:33:44 2012
mtime: 0x4fcdee8e:91e30114 -- Tue Jun 5 13:33:34 2012
crtime: 0x4fcdee46:01258f1c -- Tue Jun 5 13:32:22 2012
[...]
您可以看到较新的stat函数具有一个birth字段,尽管输出似乎不正确。并通过debugfs我们可以获得信息(crtime,因为我在ext4文件系统上)。
statx支持
自从内核4.11以来,除了更好地支持Y2038或网络文件系统外,还存在一个新的statx系统调用,它还带来了一些额外的功能,例如访问btime
或出生时间(创建时间)。对ext4的支持应该在同一内核版本4.11中。
在以后的内核版本中,已经有一些补丁程序可以增加对该新系统调用的支持:例如,内核4.13中的BTRFS和F2FS,4.14中的SMB3、4.15中的GFS2、4.16中的NFS等。
即将到来的glibc将提供一个函数调用来查询此接口(请参阅Phoronix有关glibc statx支持的新闻)。因此,我们可以期待很快就会在用户空间中支持此功能。