【Linux】Linux下使用stat命令所显示出来的三个时间

转 https://blog.csdn.net/pointer_y/article/details/54347968

在linux系统下,使用stat(显示inode信息)命令可以查看一个文件的某些信息,我们先来尝试一下。

简单的介绍一下stat命令显示出来的文件其他信息:
- File:显示文件名
- Size:显示文件大小
- Blocks:文件使用的数据块总数
- IO Block:IO块大小
- regular file:文件类型(常规文件)
- Device:设备编号
- Inode:Inode号
- Links:链接数
- Access:文件的权限
- Gid、Uid:文件所有权的Gid和Uid。

Linux下的三个时间:
1. Access Time:简写为atime,表示文件的访问时间。当文件内容被访问时,更新这个时间
2. Modify Time:简写为mtime,表示文件内容的修改时间,当文件的数据内容被修改时,更新这个时间。
3. Change Time:简写为ctime,表示文件的状态时间,当文件的状态被修改时,更新这个时间,例如文件的链接数,大小,权限,Blocks数。

上面最开始的三个时间是一模一样的,原因是我在创建它的同时修改了它的内容,所以它的大小,Blocks也发生变化,也相当于一次访问,所以,我退出保存后三个时间一致。

下面进行一一验证。

1.atime(访问时间)的更新

2.mtime(修改时间)的更新

这里我使用echo指令向hello.cpp文件中写入了一行内容,惊讶的发现,不止mtime被更新了,而且ctime也被更新了。这是问什么呢?原因很简单,前面说过,ctime在文件大小,Blocks发生变化时也会被更新,所以仔细观察上图,这两项信息是否发生变化了呢?
3.ctime(状态时间)的更新

使用chmod指令修改hello.cpp的文件权限后,状态时间再次更新。
那如果不采取这些操作导致系统自己更新这三个时间,有没有办法人为改变这三个时间呢?答案是有的,请继续往下看~

touch命令
我们都知道touch命令是用来创建文件的,其实它的用法还有一个,就是修改文件的时间戳。
用法:
-a 或–time=atime或–time=access或–time=use 只更改访问时间。
-m 或–time=mtime或–time=modify  只更改修改时间
-d、-t  使⽤指定的⽇期时间,⽽⾮现在的时间
我们来试一试:

通过上图可以发现,我只是通过-a选项试图修改hello.cpp的访问时间,结果ctime(状态时间)也发生了改变。虽然实际上我用touch操作只改变了atime,但是由于文件的状态发生了变化,所以ctime就自己更新了。

没错,和上面一样,我只是通过-m选项改了文件的修改时间,ctime依然更新了。touch指令依然只是修改了修改时间,而状态时间是系统自己更新的。为什么会这样呢?想一下,我们每次使用touch指令其实都是修改了文件的inode信息,所以状态时间就会自己更新。

每天一个linux命令之stat的更多相关文章

  1. 每天一个 Linux 命令(21):find命令之xargs

    在使用 find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行.但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出 ...

  2. 每天一个linux命令(25):linux文件属性详解

    Linux 文件或目录的属性主要包括:文件或目录的节点.种类.权限模式.链接数量.所归属的用户和用户组.最近访问或修改的时间等内容.具体情况如下: 命令: ls -lih 输出: [root@loca ...

  3. 每天一个linux命令(46):vmstat命令

    vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存.进程.CPU活动进行监控.他是对系统的整体情况进行统计,不足之处是无法对某个进程进行深 ...

  4. 每天一个linux命令目录

    出处:http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html 开始详细系统的学习linux常用命令,坚持每天一个命令,所以这个系列为每 ...

  5. 每天一个 Linux 命令(20):find命令之exec

    find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了. exec解释: -exec  参数后面跟的是command ...

  6. 每天一个linux命令(20):find命令之exec

    find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了. exec解释: -exec  参数后面跟的是command ...

  7. 每天一个Linux命令

    每天一个Linux命令(1):ls命令 每天一个Linux命令(2):cd命令 每天一个Linux命令(3):pwd命令 每天一个 Linux 命令(4):mkdir 每天一个 Linux 命令(5) ...

  8. 每天一个linux命令-转载

    每天一个linux命令目录 转载自: http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html   开始详细系统的学习linux常用命令 ...

  9. [转]每天一个linux命令目录

    [转]每天一个linux命令目录 http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html 开始详细系统的学习linux常用命令,坚持每 ...

  10. 每天一个linux命令(45)--telnet命令

    每天一个Linux命令,今天是网络命令中的Telnet. Telnet 命令通常用来远程登录,Telnet 程序是基于 Telnet 协议的远程登录客户端程序.Telnet 协议是TCP/IP协议族中 ...

随机推荐

  1. IDEA 半天卡住buid(编译)不动

    [号外号外!] 最终解决办法并不复杂,关键在于"遇见问题,怎么样层层分析,多条路径试错,最终解决问题的思路或者能力"--资深码农的核心竞争力之一 背景 今天结束完最近2个月的一个项 ...

  2. MySql中varchar和char,如何选择合适的数据类型?

    背景 学过MySQL的同学都知道MySQL中varchar和char是两种最主要的字符串类型,varchar是变长的类型,而char是固定长度.那关于如何选择类型就成为令人头疼的事,很多初学者为了保证 ...

  3. codevs1298, hdu1392 (凸包模板)

    题意: 求凸包周长. 总结: 测试模板. 代码: #include <iostream> #include <cstdio> #include <cstring> ...

  4. 从0实现python批量爬取p站插画

    一.本文编写缘由 很久没有写过爬虫,已经忘得差不多了.以爬取p站图片为着手点,进行爬虫复习与实践. 欢迎学习Python的小伙伴可以加我扣群86七06七945,大家一起学习讨论 二.获取网页源码 爬取 ...

  5. LruCache缓存bitmap(三)

    应用在网络连接上,onrestart后不会重新联网获取图片,省去了流量, public class MainActivity extends AppCompatActivity { ImageView ...

  6. Distcp 跨集群同步

    date: 2020-10-09 17:45:00 updated: 2020-10-10 17:45:00 Distcp 跨集群同步 1. 使用方法及原理 hadoop distcp srcPath ...

  7. 【译】值得推荐的十大React Hook 库

    十大React Hook库 原文地址:https://dev.to/bornfightcompany/top-10-react-hook-libraries-4065 原文作者:Juraj Pavlo ...

  8. JUC---02JUC辅助类

    一.java.util.concurrent.CountDownLatch------减少计数 1.执行原理: ①.CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,这 ...

  9. nacos 作为配置中心使用心得--配置使用

    1.页面配置 撇开原理不谈,先来介绍下nacos的基本使用,如下图nacos配置是以data id为单位进行使用的,基本上一个服务的一个配置文件就对应一个data id,支持的格式有xml,yaml, ...

  10. 编排yml文件剖析

    # yaml格式的pod定义文件完整内容: apiVersion: v1       #必选,版本号,例如v1 kind: Pod       #必选,Pod metadata:       #必选, ...