【Linux】stat命令查看文件的三个时间参数

来源:互联网 发布:mysql 64位 win10 编辑:程序博客网 时间:2024/05/16 01:36


在Windows中创建一个文件都会有相应的创建时间,修改时间,访问时间来记录文件的一些属性。在Linux中也不例外,文件也有三个时间来记录文件的变动,这三个时间分别是Modification time (修改时间)、Change time(状态改动时间)、Access time(访问时间)。下面我们就来了解一下这几个时间。

(1)初识三个文件时间

Modification time (mtime):当该文件的『内容数据』变更时,就会更新这个时间! 『内容数据』指的是文件中记录的内容,而不包括文件属性和权限等!

Change time (ctime):当该文件的『状态 (status)』改变时,就会更新这个时间,举例来说, 像是文件权限、属性、inode号等被更改了,都会更新这个时间。

Access time (atime):当我们访问该文件时,就会更新这个时间为最后一次访问该文件的时间 。 当我们使用 cat 、more、less等命令读取文件信息的时候,就会更新 atime 了。

(2)查看时间

我们可以使用 stat 这个命令来查看文件的三个时间:

这个时候我们只创建了文件,因此atime,mtime,ctime是相同的,都记录的是文件的创建时间。

也可以用 ll 或ls -l --time=atime或着ls -l --time=ctime来单独查看这三个时间,如下:

(3)三个时间的变动情况


echo命令可以在不改变atime的情况下向文件中写入内容

cat命令查看文件内容只改变atime

chmod命令改变文件的访问权限只改变ctime

(4)touch命令与三个时间的关系

1、 touch的功能

touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间。

2、touch的命令参数

-a   或--time=atime或--time=access或--time=use  只更改存取时间。-c   或--no-create  不建立任何文档。-d  使用指定的日期时间,而非现在的时间。-m   或--time=mtime或--time=modify  只更改变动时间。-r  把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。-t  使用指定的日期时间,而非现在的时间。

2.1  -a参数


touch -a 命令本来修改的是atime,但是ctime却也随之改变,为什么呢?这是因为touch命令不管进行什么操作都会改变文件的inode号,因此进行touch命令后,ctime一定会改变。(touch -m 命令也是同样的道理)

2.2  -c参数


2.3  -d参数


修改时间atime和mtime为指定时间,而ctime则更改为最新时间。

2.4  -m参数


touch -m命令本质只改变mtime,ctime改变与 -a 命令原因相同。

2.5  -r 参数

更新tmp.1的时间戳与tmp.2相同


2.6  -t 参数


值得说明的是:

这里touch -t 使用指定的时间值 time 作为指定文件相应时间戳记的新值.此处的 time规定为如下形式的十进制数:      

  [[CC]YY]MMDDhhmm[.SS]     

  这里,CC为年数中的前两位,即”世纪数”;YY为年数的后两位,即某世纪中的年数.如果不给出CC的值,则touch   将把年数CCYY限定在1969--2068之内.MM为月数,DD为天数,hh 为小时数(几点),mm为分钟数,SS为秒数.此处秒的设定范围是0--61,这样可以处理闰秒.这些数字组成的时间是环境变量指定的时区中的一个时间。由于系统的限制,早于1970年1月1日的时间是错误的。



1 0