关于文件 atime mtime gtime 专题–2016-07-27

Linux文件组成部分:元数据(metadata)和数据(date)

元数据的查看方式:使用stat命令;

数据的查看方式:文本格式使用 cat nano查看及修改即可;

stat命令:

功能说明:显示文件或文件系统的状态

语法:

stat  [OPTION] …  FILE…

参数:

 

举例:

[root@wCentos7 testdir]#  stat  stat.txt  ====>显示stat.的文件属性
  File: ‘stat.txt’
  Size: 0          Blocks: 0          IO Block: 4096   regular empty file
Device: 805h/2053d Inode: 3140        Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_runtime_t:s0
Access: 2016-07-27 18:59:23.691076633 +0800
#文件访问时间状态(atime)
Modify: 2016-07-27 18:59:23.691076633 +0800
#文件修改时间状态(mtime)
Change: 2016-07-27 18:59:23.691076633 +0800
#文件属性改变状态(ctime)
Birth: -
 注意:由于文件是刚刚建立的,三个时间是一样的

 

验证一下操作会对文件的属性带来三个时间上的变化

1. cat文件内容,看看文件属性变化如何?

2. nano看看文件变化如何?

3. 给文件追加部分内容,看看文件属性变化如何?

4. nano添加文件内容看看文件属性变化如何?

5. 修改文件权限,看看文件属性变化如何?

6. touch 下文件看看文件属性变化如何?

 

 

测试一: cat文件内容,看看文件属性变化如何?

cat文件内容,atime时间变为当前系统时间

(实际应用中,文件的访问时间没有什么太大的意义,可以设置文件的访问时间不需要变化

注意:centos 6后以后atime 的时间不会由于  cat而改变时间:

  atime 时间变化一天以前 时  当atime的时间比mtime 要旧 时

 

[root@wCentos7 testdir]# cat stat.txt 
[root@wCentos7 testdir]# stat stat.txt 
  File: ‘stat.txt’
  Size: 0          Blocks: 0          IO Block: 4096   regular empty file
Device: 805h/2053d Inode: 3140        Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_runtime_t:s0
Access: 2016-07-27 19:10:48.000064317 +0800
Modify: 2016-07-27 18:59:23.691076633 +0800
Change: 2016-07-27 18:59:23.691076633 +0800
 Birth: -

测试二:nano看看文件变化如何?

nano没有修改文件内容,文件属性没有任何的变化,所有的属性都没有变化

[root@wCentos7 testdir]# nano stat.txt 
[root@wCentos7 testdir]# stat stat.txt 
  File: ‘stat.txt’
  Size: 0          Blocks: 0          IO Block: 4096   regular empty file
Device: 805h/2053d Inode: 3140        Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_runtime_t:s0
Access: 2016-07-27 19:10:48.000064317 +0800
Modify: 2016-07-27 18:59:23.691076633 +0800
Change: 2016-07-27 18:59:23.691076633 +0800
 Birth: -

 

测试三:给文件追加部分内容,看看文件属性变化如何?

追加部分内容进入stat.txt文件,修改时间与改变时间都变成当前系统时间

  (追加内容 导致文件大小变化,也导致文件 mtime时间变化,文件属性本身有变化,所以文件改变时间也会更新)

[root@wCentos7 testdir]# echo "wo shi hao ren " > stat.txt 
[root@wCentos7 testdir]# stat stat.txt 
  File: ‘stat.txt’
  Size: 16         Blocks: 8          IO Block: 4096   regular file
Device: 805h/2053d Inode: 3140        Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_runtime_t:s0
Access: 2016-07-27 19:10:48.000064317 +0800
Modify: 2016-07-27 19:22:33.231051624 +0800
Change: 2016-07-27 19:22:33.231051624 +0800
 Birth: -

 

 

 

测试四:nano添加文件内容看看文件属性变化如何?

[root@wCentos7 testdir]# nano  stat.txt  ->修改文件内容
[root@wCentos7 testdir]# stat   stat.txt  ->查看文件状态
  File: ‘stat.txt’
  Size: 52         Blocks: 8          IO Block: 4096   regular file
Device: 805h/2053d Inode: 3140        Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_runtime_t:s0
Access: 2016-07-27 19:27:08.464046670 +0800
Modify: 2016-07-27 19:27:27.441046329 +0800
Change: 2016-07-27 19:27:27.441046329 +0800
 Birth: -

(修改文件内容后,三个文件时间都在变化,文件修改时间和文件改变时间是一致的,并且和大于文件访问时间)

[root@wCentos7 testdir]# cat   stat.txt  -> 查看文件内容
wo
shi hao ren ni shi bu shi de a dksajf aklsjf ;l 
[root@wCentos7 testdir]# stat   stat.txt  ->再来查看文件状态
  File: ‘stat.txt’
  Size: 52         Blocks: 8          IO Block: 4096   regular file
Device: 805h/2053d Inode: 3140        Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_runtime_t:s0
Access: 2016-07-27 19:28:08.989045581 +0800
Modify: 2016-07-27 19:27:27.441046329 +0800
Change: 2016-07-27 19:27:27.441046329 +0800
 Birth: -

(cat文件内容后,文件访问时间在变化,其它的文件时间没有变化)

 

测试五:修改文件权限,看看文件属性变化如何?

 

[root@wCentos7 testdir]# chmod 777 stat.txt -->修改文件权限
[root@wCentos7 testdir]# stat stat.txt  -->查看其文件属性
  File: ‘stat.txt’
  Size: 52         Blocks: 8          IO Block: 4096   regular file
Device: 805h/2053d Inode: 3140        Links: 1
Access: (0777/-rwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_runtime_t:s0
Access: 2016-07-27 19:28:08.989045581 +0800
Modify: 2016-07-27 19:27:27.441046329 +0800
Change: 2016-07-27 19:34:52.197038324 +0800
 Birth: -
(修改文件权限后,只改变了文件的属性,故只有mtime的时间改变了)

 

 

测试六:touch 下文件看看文件属性变化如何?

[root@wCentos7 testdir]# touch stat.txt 
[root@wCentos7 testdir]# stat stat.txt 
  File: ‘stat.txt’
  Size: 52         Blocks: 8          IO Block: 4096   regular file
Device: 805h/2053d Inode: 3140        Links: 1
Access: (0777/-rwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_runtime_t:s0
Access: 2016-07-27 19:39:29.247033338 +0800
Modify: 2016-07-27 19:39:29.247033338 +0800
Change: 2016-07-27 19:39:29.247033338 +0800
 Birth: -
(touch下文件后,文件的三个时间都改变了,由于touch命令的会修改文件mtime的时间,故ctime的时间也会改变)

 

 

 

进过以上测试,我可以得出以下理论:

1.修改atime的时间,只要涉及到打开文件的操作就会修改atime的时间,不过实际中atime的时间修改太过频繁,所以在实际企业应用中可能会禁止修改atime的时间。

2.修改文件内容,追加新的内容,追加空白内容也会修改文件的修改时间 mtime,也会导致文件ctime的时间改变。

3.ctime,文件权限变化,文件大小变化,或其他文件状态变化都会导致文件ctime时间变化,不过atime的时间变化不会影响ctime的时间变化。 

 

 

 

 

 

 

 

 


 

 

 

 

 

原创文章,作者:linux_root,如若转载,请注明出处:http://www.178linux.com/27682

赞 (0)
linux_rootlinux_root
上一篇 2016-08-04 14:42
下一篇 2016-08-04 14:42

相关推荐

  • Linux的哲学理念

    1、由目的单一的小程序组成,通过使用者的组合形成一个能够完成复杂任务的应用程序 2、一切皆为文件 3、尽量避免捕获用户接口;也就是说Linux运行的程序大多数是不需要过多的反复输入/输出人机交互信息,运行程序命令,直接获得反馈的结果,是一种目的单一的程序 4、配置文件保存为纯文本格式

    Linux干货 2016-10-29
  • 分区”魔术师”的磁盘管理

    设备文件 I/O Ports: I/O设备地址 一切皆文件: open(), read(), write(), close() 设备类型: 块设备: block,存取单位“块”,磁盘 字符设备: char,存取单位“字符”,键盘 设备文件:关联至一个设备驱动程序,进而能够跟与之对应 硬件设备进行通信 设备号码: 主设备号: major number, 标识设…

    Linux干货 2016-08-29
  • 逻辑卷的创建与移除

    一、弹性控制磁盘大小的lvm:     假如有这样一个场景,在初始安装linux系统时给 /home分区设置了一定大小,但是过了一段时间后,你发现初始分配的大小远不能满足公司的扩大,员工增加,需要分配的账号的磁盘空间也变大,这时你应该怎么办?是挂载一块更大的硬盘,将原来的小硬盘拆除掉吗?其实在linux中有lvm可动态增大文件系…

    Linux干货 2016-08-30
  • ☞keepalived

    keepalived 高可用集群 VRRP协议 keepalived 安装keepalived 主要文件 配置文件说明 【一】测试keepalived基本功能 单主模型示例 双主模型示例 通知脚本示例 【二】单主模型高可用DR类型LVS集群 配置keepalived主机 Real Server配置 测试结果 【三】双主模型高可用DR类型LVS集群 配置kee…

    Linux干货 2016-11-01
  • GDB中应该知道的几个调试方法

    七、八年前写过一篇《用GDB调试程序》,于是,从那以后,很多朋友在MSN上以及给我发邮件询问我关于GDB的问题,一直到今天,还有人在问GDB的相关问题。这么多年来,有一些问题是大家反复在问的,一方面,我觉得我以前的文章可能没有说清楚,另一方面,我觉得大家常问的问题正是最有用的,所以,在这里罗列出来。希望大家补充。 一、多线程调试 多线程调试可能是问得最多的。…

    Linux干货 2016-07-11
  • bash脚本初探

                              (注)$@和$*的区别,以及$0..$n [root@ _6_ ~]# cat weizhi.sh  #!/bin/bash e…

    Linux干货 2016-08-15