linux filestat 结构体,Linux文件的三种时间戳(stat命令)

stat命令

Linux下的stat命令用于展示一个文件以及当前文件系统的状态,下面是一个实例:

20191110175746.png

可以看到有一个文件的很多信息,文件名、文件大小、文件系统block大小等等。具体什么是block可以看我这篇博客。注意其中的IO Block就是当前文件系统的块大小(即通常的4096KB),而左边的Blocks并不是说这个文件占了多少个文件系统的块,这里的Blocks是以512Bytes为单位的,所以一个文件系统块正好等于这里的8个Blocks。

重点关注最后的三个时间模样的属性,分别是Access Time、Modify Time、Change Time,这就是Linux文件的三个时间戳。

Access

Access Time表示该文件最后一次被阅读的时间,看如下的例子:

20191110182442.png

因为我通过cat命令读取了文件的内容,所以文件的Access Time更新了。

Modify

Modify Time表示该文件最后一次内容被修改的时间,看如下的例子:

20191110184212.png

通过追加重定向向文件中添加了一些内容,文件的内容被修改,于是Modify Time更新。

Change

Change可能在英语里和Modify没啥区别,但这里Change Time表示该文件的元数据最后一次被修改的时间。

什么是文件的元数据呢?Stackoverflow下stat是如何用结构体表示一个文件的:

struct stat {

dev_t st_dev; /* ID of device containing file */

ino_t st_ino; /* inode number */

mode_t st_mode; /* protection */

nlink_t st_nlink; /* number of hard links */

uid_t st_uid; /* user ID of owner */

gid_t st_gid; /* group ID of owner */

dev_t st_rdev; /* device ID (if special file) */

off_t st_size; /* total size, in bytes */

blksize_t st_blksize; /* blocksize for file system I/O */

blkcnt_t st_blocks; /* number of 512B blocks allocated */

time_t st_atime; /* time of last access */

time_t st_mtime; /* time of last modification */

time_t st_ctime; /* time of last status change */

};

也就是说这个结构体中的成员就是文件所谓的元数据。而只要这个结构体中除了st_atime、st_mtime、st_ctime的其他任何一个成员的值改变了,Modify Time也就随之更新。看下面这个例子:

20191110185821.png

由于文件的所有者更改成了root,所以元数据发生变化,Change Time更新。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值