Quantcast
Viewing all articles
Browse latest Browse all 11063

初识linux的三个时间

1.从命令看时间

linux下,我们可以去查看一个文件的三个时间,比如:对于test.c文件我们可以查看时间,使用命令

stat查看

stat test.c

在这里我们得到以下信息。


Image may be NSFW.
Clik here to view.
初识linux的三个时间

通过上述信息,我们可以看到有许多信息,接下来,对于这三个时间,我们进行一番讲解。

2.深入理解三个时间

atime(Access time):当我们去访问这个文件,这个时间会被改变,时间就是最后一次我们访问的时间,例如:我们使用cat或者more来读取这个文件。

mtime(Modify time):这里所说的就是文件内容最后的修改时间,不涉及权限。

ctime(Change time):这里所说的改变是改变inode中的信息,比如说文件的权限,所有者,所有组等等信息。

我们首先来创建三个文件


Image may be NSFW.
Clik here to view.
初识linux的三个时间

在这里,默认情况下,我们所显示出来的时间是系统的mtime。

如果想要查看atime和ctime,可以这样操作:


Image may be NSFW.
Clik here to view.
初识linux的三个时间

这样,我们就可以通过上述的两条命令来查看ctime和atime。(由于上述文件只进行了创建,所以这个时候,三个文件的三个时间都是一样的)

接下来,我们对三个时间的改变进行验证。

首先我们对first.txt改变mtime,只需要修改文件内容就好了


Image may be NSFW.
Clik here to view.
初识linux的三个时间

然后我们对于first文件,我们进行操作,cat访问它,查看它的atime


Image may be NSFW.
Clik here to view.
初识linux的三个时间

所以,可以知道atime的性质了

接下来,验证一下ctime。通过last.txt验证


Image may be NSFW.
Clik here to view.
初识linux的三个时间

3.关于三个时间之间的联系

其实如果当你把这三种都进行一次测试以后,就会发现一些联系,就是当你去做一些操作,改变了一个时间以后,也可能影响到了另外的时间。

比如说我们这么来看。


Image may be NSFW.
Clik here to view.
初识linux的三个时间

从这点,我可以这样推测,我在给last.txt当中添加文件的时候,mtime发生了变化,这个时候inode当中的信息size也发生了变化,所以ctime也会改变。

接下来我们测试修改ctime,查看其他是否修改我们测试last.txt


Image may be NSFW.
Clik here to view.
初识linux的三个时间

最后我们测试修改atime


Image may be NSFW.
Clik here to view.
初识linux的三个时间

通过上述步骤我们就对三个时间之间的关系有了一些了解。

另外。在练习的步骤中我发现一个问题,就是对于atime当你more一次以后,更新了时间,再次进行more,这个时间是不会更新的。


Image may be NSFW.
Clik here to view.
初识linux的三个时间

这个行为经过搜素说明是和内核的行为有关,atime更新少,使得性能更加高效。

4.touch命令和三个时间的关系

这个命令就是touch

touch有两个功能,一个是用来创建新的文件,另外的一个功能就是把已经存在的文件时间变为系统当前的时间,把数据原封不动的保存下来。

-a:或--time=atime或--time=access或--time=use 只更改存取时间; -c:或--no-create 不建立任何文件; -d:<时间日期> 使用指定的日期时间,而非现在的时间; -f:此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题; -m:或--time=mtime或--time=modify 只更该变动时间; -r:<参考文件或目录> 把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同; -t:<日期时间> 使用指定的日期时间,而非现在的时间; --help:在线帮助; --version:显示版本信息。

首先touch -a


Image may be NSFW.
Clik here to view.
初识linux的三个时间

所以可以看到 -a主要是更改的atime,当atime改变以后,文件的状态发生了改变,所以ctime也发生了改变。

然后是touch -m


Image may be NSFW.
Clik here to view.
初识linux的三个时间

这个时候的修改了mtime。

为什么ctime都发生了改变呢?

其实这个很好解释当我们对这个文件touch以后无论怎么样,都改变了这个文件的inode的信息,所以,ctime在touch以后是肯定要改变的。

另外的touch -t和touch -d可以改变两个时间到一个指定的时间,只不过格式的要求是不同的。

5.总结

所以最后关于改变时间的总结,

当你读取文件,只会改变atime

当你变更文件内容,会改变ctime和mtime

当你改变了权限与inode的其他相关属性,会改变ctime

我们通过touch可以修改三个时间。只要修改了,ctime是一直会变的。


Viewing all articles
Browse latest Browse all 11063

Trending Articles