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:文件或目录的内容最后一次被修改的时间,比如通过vimecho等命令对文件内容进行修改时,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