从stat
命令中可以了解文件信息,其中包括 4 个时间:Access time、Modify time、Change time 和 Birth time:
# stat tmp.txt
File: tmp.txt
Size: 25250 Blocks: 56 IO Block: 4096 regular file
Device: fd03h/64771d Inode: 54237138 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2024-06-25 13:32:04.095500107 +0800
Modify: 2024-06-25 13:31:52.646077571 +0800
Change: 2024-06-25 13:31:52.646077571 +0800
Birth: 2024-06-25 13:31:52.646077571 +0800
这 4 个 time,代表的作用如下。
Access time
Access time:文件或目录最后一次被访问的时间,比如使用 cat
等命令访问了文件,Access time 时间就会更新。Modify time 和 Change time 不变。
# cat tmp.txt
123
# stat tmp.txt
File: tmp.txt
Size: 25250 Blocks: 56 IO Block: 4096 regular file
Device: fd03h/64771d Inode: 54237138 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2024-08-19 14:18:41.667965995 +0800
Modify: 2024-06-25 13:31:52.646077571 +0800
Change: 2024-06-25 13:31:52.646077571 +0800
Birth: 2024-06-25 13:31:52.646077571 +0800
Modify time
Modify time:文件或目录的内容最后一次被修改的时间,比如通过vim
或echo
等命令对文件内容进行修改时,Modify time 和 Change time 都会更新,Access time 不变。Modify time 的改变不一定会影响 Access time,但是 Change time 会随之改变。
# echo '000' > tmp.txt
# stat tmp.txt
File: tmp.txt
Size: 4 Blocks: 8 IO Block: 4096 regular file
Device: fd03h/64771d Inode: 54237138 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2024-08-19 14:18:41.667965995 +0800
Modify: 2024-08-19 14:22:55.618362035 +0800
Change: 2024-08-19 14:22:55.618362035 +0800
Birth: 2024-06-25 13:31:52.646077571 +0800
Change time
Change time:文件或目录的属性最后一次被改变的时间。刚才提到对文件内容修改时,Modify time 和 Change time 都会更新。那更改文件权限时,就只有 Change time 会更新。
# chmod 444 tmp.txt
# stat tmp.txt
File: tmp.txt
Size: 4 Blocks: 8 IO Block: 4096 regular file
Device: fd03h/64771d Inode: 54237138 Links: 1
Access: (0444/-r--r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2024-08-19 14:18:41.667965995 +0800
Modify: 2024-08-19 14:22:55.618362035 +0800
Change: 2024-08-19 14:27:34.124665896 +0800
Birth: 2024-06-25 13:31:52.646077571 +0800
Birth time
表示文件的创建时间,即文件在文件系统中被创建的时间。部分系统支持。
扩展
使用 touch 更改这 3 个时间
touch
命令有 3 个参数可以更改这 3 个时间:
-a
:只更改 access time-m
:只更改 modify time-d
:使用自定义时间更改 access time 和 modify time
# touch -d "2000-01-01 00:00:00" tmp.txt
# stat tmp.txt
File: tmp.txt
Size: 4 Blocks: 8 IO Block: 4096 regular file
Device: fd03h/64771d Inode: 54237138 Links: 1
Access: (0444/-r--r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2000-01-01 00:00:00.000000000 +0800
Modify: 2000-01-01 00:00:00.000000000 +0800
Change: 2024-08-19 14:39:35.143341352 +0800
Birth: 2024-06-25 13:31:52.646077571 +0800
通过 ls 查看这 3 个时间
ls
,有三个选项:
-c
:对应 Change time-t
:对应 Modify time-u
:对应Access time
如果使用ls
时,配合选项--full-time
,则在输出中可以显示详细的time信息.
# ls -u --full-time tmp.txt
-r--r--r-- 1 root root 4 2000-01-01 00:00:00.000000000 +0800 tmp.txt