atime mtime ctime命令详解

Linux系统文件有三个主要的时间属性,分别是ctime(change time, 而不是create time), atime(access time), mtime(modify time)

mtimectime的区别在于,只有修改了文件的内容,才会更新文件的mtime,而对文件更名,修改文件的属主等操作,只会更新ctime

举例:

对文件进行mv操作,mtime不变,ctime更新;

编辑文件内容,atimemtimectime同时修改。


atime, 这个就是每次查看文件内容的时候会更新。比如cat操作,而ls操作是不会更新的。


你可以通过stat来查看文件的mtime,ctime,atime等属性,也可以通过ls命令来查看,具体如下:

ls -lc filename 列出文件的 ctime


ls -lu filename 列出文件的 atime


ls -l filename 列出文件的 mtime


简而言之 atime 一旦发生访问就改变

       ctime 改变文件属性,属主时会改变

       mtime 修改文件内容时才会改变

注:当修改mtime,ctime必须随着改变.因为文件大小等都是属性;有人说atime也一定会改变,要想修改文件必须先访问;其实是不对的;不必访问文件就能修改其内容:如:#echo This is a test ! >> /etc/issue,  issue文件内容会变,但并没有访问文件,所以atime并没有改变.


修改一个目录,在一个目录下touch一个文件,mtimectime会改变,atime不一定会变

[root@station16 ~]# stat /tmp

file: `/tmp'

size: 135168          Blocks:280        IO Block: 4096   directory

fevice: fd00h/64768d    Inode: 2555905     Links: 8

access: (1777/drwxrwxrwt)  Uid: (   0/    root)   Gid: (   0/    root)

access: 2010-07-09 09:15:59.000000000 +0800

modify: 2010-07-09 09:15:57.000000000 +0800

change: 2010-07-09 09:15:57.000000000 +0800

[root@station16 ~]# cd /tmp

[root@station16 tmp]# touch text.txt

[root@station16 tmp]# cd

[root@station16 ~]# !s

stat /tmp

file: `/tmp'

size: 135168          Blocks:280        IO Block: 4096   directory

device: fd00h/64768d    Inode: 2555905     Links: 8

access: (1777/drwxrwxrwt)  Uid: (   0/    root)   Gid: (   0/    root)

access: 2010-07-09 09:15:59.000000000 +0800

modify: 2010-07-09 09:31:39.000000000 +0800

change: 2010-07-09 09:31:39.000000000 +0800


atime改变,mtime ctime不变的情况


[root@station16 ~]# stat /tmp

File: `/tmp'

Size: 135168          Blocks:280        IO Block: 4096   directory

device: fd00h/64768d    Inode: 2555905     Links: 8

access: (1777/drwxrwxrwt)  Uid: (   0/    root)   Gid: (   0/    root)

access: 2010-07-09 09:15:59.000000000 +0800

modify: 2010-07-09 09:31:39.000000000 +0800

change: 2010-07-09 09:31:39.000000000 +0800

[root@station16 ~]# cd /tmp

[root@station16 tmp]# ls

aa text  text.txt

[root@station16 tmp]# cd

[root@station16 ~]# !s

stat /tmp

file: `/tmp'

size: 135168          Blocks:280        IO Block: 4096   directory

device: fd00h/64768d    Inode: 2555905     Links: 8

access: (1777/drwxrwxrwt)  Uid: (   0/    root)   Gid: (   0/    root)

access: 2010-07-09 09:35:49.000000000 +0800

modify: 2010-07-09 09:31:39.000000000 +0800

change: 2010-07-09 09:31:39.000000000 +0800


touch  命令选项的时间格式:

CC表示世纪

YY表示年

MM表示月

DD表示日

hh表示小时

mm表示分钟

ss表示秒

201001311200.34

CCYYMMDDhhmm.ss

表示时间为201013112034

-t:  后面可接时间,其格式如上所述

-a:仅修改access time

-c:仅修改时间,而不建立文件

-m:仅修改mtime

[dengy@int-test shell]$ touch -t 0303132019.20 111

[dengy@int-test shell]$ stat 111

File: `111'

Size: 0               Blocks:0          IO Block: 4096   regular empty file

Device: 804h/2052d      Inode: 4201488     Links: 1

Access: (0664/-rw-rw-r--)  Uid: ( 506/   dengy)   Gid: ( 507/   dengy)

Access: 2003-03-13 20:19:20.000000000 +0800

Modify: 2003-03-13 20:19:20.000000000 +0800

Change: 2014-01-26 15:23:32.035759556 +0800  未发生改变


mtime参数的理解应该如下:

-mtime n 按照文件的更改时间来找文件,n为整数

n表示文件更改时间距离为n天,-n表示文件更改时间距离在n天以内+n表示文件更改时间距离在n天以前

例如:

-mtime 0 表示文件修改时间距离当前为0天的文件,即距离当前时间不到1天(24小时)以内的文件。

-mtime 1 表示文件修改时间距离当前为1天的文件,即距离当前时间124小时-48小时)的文件。

-mtime1 表示文件修改时间为大于1天的文件,即距离当前时间2天(48小时)之外的文件

-mtime -1 表示文件修改时间为小于1天的文件,即距离当前时间1天(24小时)之内的文件


为什么-mtime1 表示文件修改时间为大于1天的文件,即距离当前时间48小时之外的文件,而不是24小时之外的呢?

因为n值只能是整数,即比1大的最近的整数是2,所有-mtime1不是比当前时间大于1天(24小时),而是比当前时间大于2天(48小时)


你可能感兴趣的:(linux,N,atime,mtime,ctime,mtime)