Linux测试noatime对文件访问时间的影响,Linux下文件的三种时光标志

会改变这个时间。如果每次访问文件都更改这个时间,对性能要求高的系统会有比较大的影响。因此可以设

  File: `filetime1.txt’

2) 每次访问都不更改Access时间:noatime,nodiratime
$ mount /tmp -o remount,noatime

 

假设对挂载目录 /tmp 改变这个设置:

  File: `filetime1.txt’

Linux测试noatime对文件访问时间的影响

  Size: 23              Blocks: 2          IO Block: 4096   Regular File

# cp abc abc2  ### 防止cat缓存,所以cp一个新文件
# stat abc2
# cat abc2
# stat abc2

  www.2cto.com  

图片 1

/dev/ram10 on /mnt/foo type ext3 (rw,noatime)

1) 每次访问都更改Access时间:atime
$ mount /tmp -o remount,atime

  foo.ok

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-04/116396.htm

 

对于情况1,2可以分别测试:

1、访问时间,读一次这个文件的内容,这个时间就会更新。比如对这个文件运用
more、cat等命令。ls、stat命令都不会修改文件的访问时间。

文件(如abc)有3个时间:

Change: 2009-08-04 20:53:27.000000000 +0800

# stat abc

  Size: 14              Blocks: 2          IO Block: 4096   Regular File

Access: 2015-04-16 19:30:13.665970572 +0800
Modify: 2015-04-16 19:28:53.770002677 +0800
Change: 2015-04-16 19:28:53.784001602 +0800

Access: (0644/-rw-r–r–)  Uid: (    0/    root)   Gid: (    0/    root)

Access是文件最后访问时间,cat命令会改变这个时间。但是由于缓存的原因,短期内只有第一次cat
‘abc’时

# echo foo.ok >> filetime1.txt 

置文件被访问的时候,不改变这个Access时间。

 st_atime  文件数据的最后存取时间       read            -u

Change: 2009-08-04 20:51:32.000000000 +0800

Access: (0644/-rw-r–r–)  Uid: (    0/    root)   Gid: (    0/    root)

在windows下,一个文件有:创建时间、修改时间、访问时间。
而在Linux下,一个文件也有三种时间,分别是:访问…

Device: 10ah/266d       Inode: 14          Links: 1    

  File: `filetime1.txt’

  Size: 14              Blocks: 2          IO Block: 4096   Regular File

在windows下,一个文件有:创建时间、修改时间、访问时间。

# / sbin/mkfs -t ext3 /dev/ram10

 

Access: (0644/-rw-r–r–)  Uid: (    0/    root)   Gid: (    0/    root)

 

# vi filetime1.txt

atime=access time

# cd /mnt/foo

Linux下文件的三种时间标记

Modify: 2009-08-04 15:13:44.000000000 +0800

# mount -t ext3 -o noatime /dev/loop0 /mnt/foo

# stat filetime1.txt 

如何查一个文件的三个时间呢?

linux的ctime代表的是文件修改时间,如果文件被修改过就很难知道文件的创建时间,在某些特殊情况下,需要查看文件的创建时间,正常情况下查看文件的ctime是无法实现的。可以使用一个变通的方法来实现保留文件创建时间,但是同时也会牺牲一些其它特性。

# stat filetime1.txt 

 

Access: (0644/-rw-r–r–)  Uid: (    0/    root)   Gid: (    0/    root)

 

find . -name file -printf “%CY-%Cm-%Cd %CH:%CM:%CS”

# date && echo “this is file be used test time of file”
>filetime.txt && ll –full-time filetime.txt

Device: 10ah/266d       Inode: 12          Links: 1    

Modify: 2009-08-04 20:51:32.000000000 +0800

 

 

 

Access: 2009-08-04 20:51:32.000000000 +0800

 

  File: `filetime1.txt’

# stat filetime1.txt 

 

使
用这个特性来挂装文件系统后,只有当mtime比atime更新的时候,才会更新atime。事实上,这个时候atime和mtime已经是同一个东西
了。所以这个选项就是为了实现对atime的兼容才推出的。并不是一个新的时间属性。使用方法就是通过mount
-o relatime /dir来挂装目录。

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

  File: `filetime.txt’

[[email protected]
foo]# stat filetime1.txt 

##############################################################

 

另外,可以格式化输出文件的三种时间,如:

Modify: 2009-08-04 20:53:27.000000000 +0800

在linux中stat函数中,用st_atime表示文件数据最近的存取时间(last accessed
time);用st_mtime表示文件数据最近的修改时间(last modified
time);使用st_ctime表示文件i节点数据最近的修改时间(last i-node’s status
changed time)。

find . -name file -printf “%TY-%Tm-%Td %TH:%TM:%TS”

另外,从kernel2.6.29开,还默认集成了一个relatime的属性。可能是因为在文件读操作很频繁的系统

-rw-r–r–    1 root     root           39 2009-08-04 15:13:44.000000000
+0800 filetime.txt

Tue Aug  4 15:13:44 HKT 2009

 

Device: 802h/2050d      Inode: 17          Links: 1    

 

 st_mtime  文件数据的最后修改时间       write           缺省

Modify: 2009-08-04 20:55:05.000000000 +0800

中,atime更新所带来的开销很大,所以很多SA都在挂装文件系统的时候使用noatime属性来停止更新atime。但是有些程序需要根据atime进行一些判断和操作,所以Linux就推出了一个relatime特性。

# mount

 

 

可见,chmod后,Ctime的变化。

因为这是一个新的文件(filetime.txt),没做过内容、属性的更改,也没读过这个文件,所以三者(访问时间、修改时间、状态改动时间)的时间是一致的,这时文件的修改时间与这三个时间是一样的,是没有疑问的。

 

# stat filetime.txt 

3、状态改动时间。是该文件的i节点最后一次被修改的时间,通过chmod、chown命令修改一次文件属性,这个时间就会更新。

而在Linux下,一个文件也有三种时间,分别是:访问时间、修改时间、状态改动时间。

Change: 2009-08-04 20:55:05.000000000 +0800

find . -name file -printf “%AY-%Am-%Ad %AH:%AM:%AS”

mtime=modifiy time

两者有此不同,在Linux下没有创建时间的概念,也就
是不能知道文件的建立时间,但如果文件建立后就没有修改过,修改时间=建立时间;如果文件建立后,状态就没有改动过,那么状态改动时间=建立时间;如果文
件建立后,没有被读取过,那么访问时间=建立时间,因为不好判断文件是否被改过、读过、其状态是否变过,所以判断文件的建立时间基本上能为不可能。

 st_ctime  文件数据的最后更改时间       chown,chmod     -c

可以在mount文件的时候使用参数-o
noatime,来把系统更新atime的特性关闭。使用了noatime参数挂载后,在文件被修改后文件的atime是不会被改变的,使用stat查看到的atime就是文件的创建时间。

Access: 2009-08-04 20:55:05.000000000 +0800

先用下面的命令来建立一个文件

Device: 10ah/266d       Inode: 12          Links: 1    

通过stat filename.txt来查,如:

如:

2、修改时间,修改时间是文件内容最后一次被修改时间。比如:vi后保存文件。ls
-l列出的时间就是这个时间。

Access: 2009-08-04 20:51:32.000000000 +0800

Change: 2009-08-04 20:57:36.000000000 +0800

说明:Access访问时间。Modify修改时间。Change状态改动时间。可以stat
*查看这个目录所有文件的状态。

Modify: 2009-08-04 20:55:05.000000000 +0800

Change: 2009-08-04 20:53:27.000000000 +0800

# 通过以上实验可以看出文件的access time 是不变的。

Modify: 2009-08-04 20:53:27.000000000 +0800

 

  Size: 0               Blocks: 0          IO Block: 4096   Regular File

Access: (0644/-rw-r–r–)  Uid: (    0/    root)   Gid: (    0/    root)

# cat filetime1.txt 

Access: 2009-08-04 20:55:05.000000000 +0800

在linux系统中,系统把文件内容数据与i节点数据是分别存放的,i节点数据存放了文件权限与文件属主之类的数据。

Access: 2009-08-04 20:51:32.000000000 +0800

Change: 2009-08-04 15:13:44.000000000 +0800

Access: 2009-08-04 15:13:44.000000000 +0800

  Size: 39              Blocks: 8          IO Block: 4096   Regular File

  Size: 23              Blocks: 2          IO Block: 4096   Regular File

 

# touch filetime1.txt

#stat filetime1.txt 

ls -l filename 列出文件的 mtime (最后修改时间)

Device: 10ah/266d       Inode: 12          Links: 1    

ctime=change time

 

Device: 10ah/266d       Inode: 14          Links: 1    

  File: `filetime1.txt’

接着向下多测试一下.

 字段           说明                  例子           ls(-l)

Access: (0777/-rwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)

ls -lu filename 列出文件的 atime(最后存取时间)

ls -lc filename 列出文件的 ctime (最后更改时间)

# chmod 777 filetime1.txt 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website