linux的ctime,atime,mtime

11 篇文章 0 订阅

题外话:今天在杭州找了一天的房子,才明白我的工资在杭州快连房租都付不起了。而且找了一天还没找到合适的。找的好累,本来都不想写了。但是作为一名菜鸡,我明白落下一天,就会落下第二天。坚持坚持,我要成为大菜鸡。

今天说的是linux中的ctime,mtime,atime这三种time。

一贯的拿来主义:
转载地址:http://blog.csdn.net/wodeqingtian1234/article/details/53975744
转载地址:http://www.linuxidc.com/Linux/2015-02/113358.htm
要去看原文的可以点击上面链接,比我排版好多了。毕竟我菜鸡。

简称全称含义
ctimechange time是在写入文件、更改所有者、权限或链接设置时随 Inode 的内容更改而更改,即文件状态最后一次被改变的时间。
atimeaccess time是在读取文件或者执行文件时更改,即文件最后一次被读取的时间。
mtimemodified time 是在写入文件时随文件内容的更改而更改,是指文件内容最后一次被修改的时间

这几推荐大家记住英文名字,反正前几遍我试图去记含义,记了就忘,并没有效果。还是记英文好


这里我讲的很简单,想要详细的话,可以去 看原文,推荐。

注意:
1、修改是文本本身的内容发生了变化(mtime)
改变是文件的索引节点发生了改变(ctime)
2、如果修改了文件内容,则同时更新ctime和mtime
3、如果只改变了文件索引节点,比如修改权限,则只是改变了ctime

4、如果使用ext3文件系统的时候,在mount的时候使用了noatime参数则不会更新atime的信息,即访问文件之后atime不会被修改,而这个不代表真实情况

小知识:这三个 time stamp 都放在 inode 中。若mtime,atime修改, inode 就一定会改,相应的inode改了,那ctime 也就跟着要改了,之所以在mount option中使用 noatime, 就是不想 file system 做太多的修改, 从而改善读取性能.

抄完别人的,就在抄下别人的代码:

[root@VM_157_218_centos ~]# stat test_shell_dir   #这里看的是一个目录
  File: `test_shell_dir'                          #一切皆文件嘛
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: fc01h/64513d    Inode: 491535      Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-07-08 22:12:01.000000000 +0800   #atime
Modify: 2017-07-08 22:46:40.000000000 +0800   #mtime
Change: 2017-07-08 22:46:40.000000000 +0800   #ctime


#我ls下这个目录,理论上我看了目录(目录也是文件哎。)里面的内容呀,但是它的atime没有变。
[root@VM_157_218_centos ~]# ls test_shell_dir 
2017_8_9.log  creat_log_file.sh  test.sh
[root@VM_157_218_centos ~]# stat test_shell_dir 
  File: `test_shell_dir'
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: fc01h/64513d    Inode: 491535      Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-07-08 22:12:01.000000000 +0800
Modify: 2017-07-08 22:46:40.000000000 +0800
Change: 2017-07-08 22:46:40.000000000 +0800
#你看什么都没变。
#cd 进这个目录,在退出来看看改变了什么。
[root@VM_157_218_centos ~]# stat test_shell_dir 
  File: `test_shell_dir'
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: fc01h/64513d    Inode: 491535      Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-07-08 22:12:01.000000000 +0800
Modify: 2017-07-08 22:46:40.000000000 +0800
Change: 2017-07-08 22:46:40.000000000 +0800

#可以看到的是,也什么没变。再去试试修改目录名字看看。
[root@VM_157_218_centos ~]# mv test_shell_dir/ test_dir
[root@VM_157_218_centos ~]# stat test_dir/      
  File: `test_dir/'
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: fc01h/64513d    Inode: 491535      Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-07-08 22:12:01.000000000 +0800
Modify: 2017-07-08 22:46:40.000000000 +0800
Change: 2017-07-09 22:08:01.000000000 +0800  #改变了哦
#这次changetime  ,即ctime改变了。

注意:下面是是抄袭别人的一段话,作者 :阮一峰
看过他的python笔记,挺喜欢他的。、、题外话

一、inode是什么?

理解inode,要从文件储存说起。

文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。

操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。

文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。

每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。

二、inode的内容
文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。

inode包含文件的元信息,具体来说有以下内容:
文件的字节数。
文件拥有者的User ID。
文件的Group ID。
文件的读、写、执行权限。
文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
链接数,即有多少文件名指向这个inode。
文件数据block的位置。

目录中保存着它底下文件的文件名以及该文件名对应的inode号。当然目录也是文件,也有自己的inode。

#

其实我个人理解有谬误。
真实的应该是下面抄袭别人中的说明部分,更容易理解。

atime:Access time,是在读取文件或者执行文件时更改,即文件最后一次被读取的时间。
说明: st_atime
Time when file data was last accessed. Changed by the
following functions: creat(), mknod(), pipe(),
utime(2), and read(2).

mtime:Modified time,是在写入文件时随文件内容的更改而更改,是指文件内容最后一次被修改的时间。
说明: st_mtime
Time when data was last modified. Changed by the fol-
lowing functions: creat(), mknod(), pipe(), utime(),
and write(2).

ctime:Change time,是在写入文件、更改所有者、权限或链接设置时随 Inode 的内容更改而更改,即文件状态最后一次被改变的时间。
说明: st_ctime
Time when file status was last changed. Changed by the
following functions: chmod(), chown(), creat(),
link(2), mknod(), pipe(), unlink(2), utime(), and
write().

不扯了,我得说下的场景。
假如在/tmp下有一大堆文件,上万个,而且文件名都是随机生成的(或者说,我比较笨,根本发现不了规律)。比方说:

[root@VM_157_218_centos test_dir]# cat creat_log_file.sh 
#!/bash/bin
PATH=$PATH
for((i=1;i<=10;i++))
do 
   x=$(date +%N)
   touch /tmp/$x
done
[root@VM_157_218_centos test_dir]# cd /tmp;ls
388680818  392158387  395707895  399200377  402962619  ap_1004.pid   hsperfdata_root   sagent.pid
390383802  393864715  397425697  401034062  404776968  cvm_init.log  net_affinity.log  setRps.log

现在我先把今天生成的文件删了,或者说,你想把除今天以外的文件删了。这里使用find就十分不错。

下面看看find命令
查找文件更新日时在距现在时刻二天以内的文件
find ./ -mtime -2

查找文件更新日时在距现在时刻二天以上的文件
find ./ -mtime +2

查找文件更新日时在距现在时刻一天以上二天以内的文件
find ./ -mtime 2

查找文件更新日时在距现在时刻二分以内的文件
find ./ -mmin -2

查找文件更新日时在距现在时刻二分以上的文件
find ./ -mmin +2

查找文件更新日时在距现在时刻一分以上二分以内的文件
find ./ -mmin 2

查找文件更新时间比文件abc的内容更新时间新的文件
find ./ -newer abc

查找文件访问时间比文件abc的内容更新时间新的文件
find ./ -anewer abc
#########################格式#########################


find ./  -type f -mtime  -1 -print -exec rm -rf {} \;

(1) "." 表示从当前目录开始递归查找

(2) “ -name '*.exe' "根据名称来查找,要查找所有以.exe结尾的文件夹或者文件

(3) " -type f "查找的类型为文件

(4) "-print" 输出查找的文件目录名

(5) 最主要的是是-exec了,-exec选项后边跟着一个所要执行的命令,表示将find出来的文件或目录执行该命令。
exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{},一个空格和一个,最后是一个分号

我要删除今天的文件:

[root@VM_157_218_centos tmp]# find ./  -type f -mtime -1 -print -exec rm -rf {} \;
./395707895
./397425697
./392158387
./399200377
./388680818
./401034062
./402962619
./404776968
./.PATH
./390383802
./393864715
[root@VM_157_218_centos tmp]# ls
ap_1004.pid  cvm_init.log  hsperfdata_root  net_affinity.log  sagent.pid  setRps.log
#删了

睡觉

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值