stat命令可以查看到访问时间,修改时间以及属性变动的改动时间,但看不到创建时间。 本文介绍用过debugfs来获取文件真是的创建时间。
目录导航
stat的输出
[root@rh6-1 ~]# stat /opt/gnode/userdata/gbase/gctmpdb/metadata
File: `/opt/gnode/userdata/gbase/gctmpdb/metadata'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 802h/2050d Inode: 1465051 Links: 2
Access: (0700/drwx------) Uid: ( 500/ gbase) Gid: ( 500/ gbase)
Access: 2020-12-22 09:15:11.470000001 +0800
Modify: 2020-12-22 09:56:36.025000002 +0800
Change: 2020-12-22 09:56:36.025000002 +0800
debugfs命令
原理是根据文件的inode,获得其创建时间,除非文件或目录被重建且inode发生了变化,否则inode的时间就是对应的创建时间。
输出内容中的 crtime 就是创建时间。
另外, ctime是最后属性改变时间,等同于Change time。
获得inode的方法
ls 用 -i参数
[root@rh6-1 ~]# ls -id /opt/gnode/userdata/gbase/gctmpdb/metadata
1465051 /opt/gnode/userdata/gbase/gctmpdb/metadata
debugfs获得inode信息
命令样式如下
debugfs -R 'stat XXXXX' /dev/sdX
其中后面的/dev/sda2是文件对应的设备编号,可以从df输出里看到。
[root@rh6-1 ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 28898428 5742124 21688352 21% /
tmpfs 4095964 44208 4051756 2% /dev/shm
方法1, 用inode号
用stat <inode> 作为参数
[root@rh6-1 ~]# debugfs -R 'stat <1465051>' /dev/sda2
debugfs 1.41.12 (17-May-2010)
Inode: 1465051 Type: directory Mode: 0700 Flags: 0x80000
Generation: 1377903021 Version: 0x00000000:0002eb62
User: 500 Group: 500 Size: 4096
File ACL: 0 Directory ACL: 0
Links: 2 Blockcount: 8
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x5fe15254:05f5e108 -- Tue Dec 22 09:56:36 2020
atime: 0x5fe1663b:c7516b34 -- Tue Dec 22 11:21:31 2020
mtime: 0x5fe15254:05f5e108 -- Tue Dec 22 09:56:36 2020
crtime: 0x5f976f18:3bd7d2d4 -- Tue Oct 27 08:51:36 2020
Size of extra inode fields: 28
EXTENTS:
(0): 5777189
方法2,直接用路径
用目录作为stat的参数
[root@rh6-1 ~]# debugfs -R 'stat /opt/gnode/userdata/gbase/gctmpdb/metadata' /dev/sda2
debugfs 1.41.12 (17-May-2010)
Inode: 1465051 Type: directory Mode: 0700 Flags: 0x80000
Generation: 1377903021 Version: 0x00000000:0002eb62
User: 500 Group: 500 Size: 4096
File ACL: 0 Directory ACL: 0
Links: 2 Blockcount: 8
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x5fe15254:05f5e108 -- Tue Dec 22 09:56:36 2020
atime: 0x5fe1489f:700e8604 -- Tue Dec 22 09:15:11 2020
mtime: 0x5fe15254:05f5e108 -- Tue Dec 22 09:56:36 2020
crtime: 0x5f976f18:3bd7d2d4 -- Tue Oct 27 08:51:36 2020
Size of extra inode fields: 28
EXTENTS:
(0): 5777189
加上grep过滤crtime
[root@rh6-1 ~]# debugfs -R 'stat /opt/gnode/userdata/gbase/gctmpdb/metadata' /dev/sda2 | grep crtime
debugfs 1.41.12 (17-May-2010)
crtime: 0x5f976f18:3bd7d2d4 -- Tue Oct 27 08:51:36 2020
[root@rh6-1 ~]# debugfs -R 'stat /opt/gnode/userdata/gbase/gctmpdb/sys_tablespace' /dev/sda2 | grep crtime
debugfs 1.41.12 (17-May-2010)
crtime: 0x5f976f18:3bd7d2d4 -- Tue Oct 27 08:51:36 2020
[root@rh6-1 ~]#
总结
要是inode的create时间是我们安装时间,那就不是应用的使用问题,而是文件系统故障。 如果是最近的其它时间,可以查看对应那个时间点到底出了啥事情,比如重建了。