日期:2014-05-16  浏览次数:20571 次

关于Linux系统中的Access time, Modify time,和Change time

????? 在linux系统中,文件和目录的inode信息中,包含三项和时间有关的内容,分别是:

????? Access time, Modify? time,和Change time.


????? 用文件来做个例子.比如,创建测试文件'1',使用命令stat查看其inode内容,显示类似下面:

$ stat 1
  File: `1'
  Size: 6               Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 117604369   Links: 1
Access: (0644/-rw-r--r--)  Uid: (  503/ ***)   Gid: (  100/   users)
Access: 2012-11-19 11:56:06.000000000 +0800
Modify: 2012-11-19 11:56:20.000000000 +0800
Change: 2012-11-19 11:56:20.000000000 +0800

?

????? Access time,指最近一次的程序对文件(目录)的直接存取时间.比如下面的例子:

$cat 1
1
2
3

$ stat 1
  File: `1'
  Size: 6               Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 117604369   Links: 1
Access: (0644/-rw-r--r--)  Uid: (  503/ ***)   Gid: (  100/   users)
Access: 2012-11-19 14:14:33.000000000 +0800
Modify: 2012-11-19 11:56:20.000000000 +0800
Change: 2012-11-19 11:56:20.000000000 +0800

????? 这里Access time发生了变化,而其它两项未变动.


????? Modify time,指最近一次的文件(目录)的内容被改动的时间.比如下面的例子:

$echo '4' >> 1
$ stat 1
  File: `1'
  Size: 8               Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 117604369   Links: 1
Access: (0644/-rw-r--r--)  Uid: (  503/ ***)   Gid: (  100/   users)
Access: 2012-11-19 14:14:33.000000000 +0800
Modify: 2012-11-19 14:17:51.000000000 +0800
Change: 2012-11-19 14:17:51.000000000 +0800

?????? 这里,Modify time已经发生了变化.

?

????? Change time,指最近一次的文件(目录)的inode信息被改变的时间.在上面的'Modify time'的例子中可以看到,Change time同时也发生了变化.这是因为文件的内容被修改后,相应的信息也会发生变化,比如文件大小'Size'.


????? 如果是一些单独改变文件(目录)的inode信息的操作,则只会对Change time产生影响.比如下面的例子:

$mv 1 2
$stat 2
  File: `2'
  Size: 8               Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 117604369   Links: 1
Access: (0644/-rw-r--r--)  Uid: (  503/ ***)   Gid: (  100/   users)
Access: 2012-11-19 14:14:33.000000000 +0800
Modify: 2012-11-19 14:17:51.000000000 +0800
Change: 2012-11-19 14:23:38.000000000 +0800

?????? 上面的操作对文件'1'进行了改名,所以只是影响了Change time.


????? 如果使用命令'ls',其有三个选项: '-u', '-t', 和'-c',分别对应的就是Access time, Modify time和Change time.使用这些选项,命令'ls'的输出会根据相应的time来进行排序.默认的,'ls'采用的是Modify time,即选项'-t'.

????? 另外,如果在上面使用'ls'时,配合选项'--full-time',则在输出中可以显示详细的time信息.