`
leixbo
  • 浏览: 33986 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

linux文件属性atime,ctime,mtime介绍

阅读更多

Linux下文件的时间分atime,ctime,mtime

 

   atime是指access time,即文件被读取或者执行的时间,修改文件是不会改变access time的。

   ctime即change time文件状态改变时间,指文件的i结点被修改的时间,如通过chmod修改文件属性,ctime就会被修改。

   mtime即modify time,指文件内容被修改的时间。 

  

使用stat可以查看文件的atime、ctime、mtime。

 

[leibo@localhost logs]$ stat uploadlog.log.2014-03-27

  File: "uploadlog.log.2014-03-27"

  Size: 3502      Blocks: 8          IO Block: 4096   普通文件

Device: 801h/2049dInode: 959479      Links: 1

Access: (0664/-rw-rw-r--)  Uid: (  508/   leibo)   Gid: (  509/   leibo)

Access: 2014-06-10 15:54:40.263218920 +0800

Modify: 2014-03-27 19:30:21.590565438 +0800

Change: 2014-06-10 12:27:21.718744108 +0800

 

 

 我们也可以通过ll查看这些时间,通常情况下我们使用的ls –l指示的是文件的modify time。

 

 -t根据修改时间排序

 -u 同-lt 一起使用:按照访问时间排序并显示

同-l一起使用:显示访问时间并按文件名排序其他:按照访问时间排序

 -c 配合-lt:根据ctime 排序并显示ctime(文件状态最后更改的时间)

 

 [leibo@localhost logs]$ ll -t

总用量 88

-rw-rw-r--. 1 leibo leibo  1754 6月  10 12:27 uploadlog.log

-rw-rw-r--. 1 leibo leibo 58353 3月  27 19:31 boss.log

-rw-rw-r--. 1 leibo leibo  3502 3月  27 19:30 uploadlog.log.2014-03-27

-rw-rw-r--. 1 leibo leibo 12584 3月  26 18:05 uploadlog.log.2014-03-26

-rw-rw-r--. 1 leibo leibo  1272 3月  26 15:31 boss.log.2014-03-26

[leibo@localhost logs]$ ll -c

总用量 88

-rw-rw-r--. 1 leibo leibo 58353 3月  27 19:31 boss.log

-rw-rw-r--. 1 leibo leibo  1272 3月  27 19:21 boss.log.2014-03-26

-rw-rw-r--. 1 leibo leibo  1754 6月  10 12:27 uploadlog.log

-rw-rw-r--. 1 leibo leibo 12584 3月  27 19:27 uploadlog.log.2014-03-26

-rw-rw-r--. 1 leibo leibo  3502 6月  10 12:27 uploadlog.log.2014-03-27

[leibo@localhost logs]$ ll -u

总用量 88

-rw-rw-r--. 1 leibo leibo 58353 6月  10 17:04 boss.log

-rw-rw-r--. 1 leibo leibo  1272 6月  10 17:04 boss.log.2014-03-26

-rw-rw-r--. 1 leibo leibo  1754 6月  10 17:04 uploadlog.log

-rw-rw-r--. 1 leibo leibo 12584 6月  10 16:02 uploadlog.log.2014-03-26

-rw-rw-r--. 1 leibo leibo  3502 6月  10 15:54 uploadlog.log.2014-03-27

 

 

atime的说明

 

   有些资料说明cat、more等读取文件的命令会改变atime,但是我试验时却发现使用cat、more时atime没有被修改,在一个博客http://blog.csdn.net/cjf_iceking/article/details/11988525找到了答案

    起初我也怀疑过是不是OS的bug导致的,后来发现,在kernel版本2.6.30之前,linux的核心开发人员针对Ext3/Ext4文件系统的性能进行了讨论,其中包括atime。在kernel 2.6.30之前,文件系统中默认会及时的更新atime,这样会带来两个问题:

(1) 系统中大量的文件访问,将atime写入到磁盘中,消耗时间,从而降低性能

(2) 这样的操作也会消耗电能

 

在Linux上运行的,很少的应用程序需要获取精确的atime时间,并且Linux核心开发人员从Ext3/Ext4文件系统的性能角度出发,决定在2.6.30版本的内核中修改atime的更新方式,只有在以下三种情况之一才会更新atime:

(1) 如果将分区mount的挂载的时候指定采用非relatime方式(默认采用relatime方式),如strictatime.

补充:在OS启动的时候,将各个分区挂载到不同的目录,在挂载(mount)的参数中采用strictatime,表明及时更新atime。在2.6.30之后mount添加了”relatime”和”strictatime”两个选项,详细的可以通过”man mount”查看。

(2) atime小于ctime或者小于mtime的时候

(3) 本次的access time和上次的atime超过24个小时

这种做法避免了频繁的更新atime,提高了文件系统的性能。果然做Linux内核的大牛无不从每一个细节抓起呢,敬佩。

 

 

 mtime的实用场景

 

    通常我们会使用log4j作为日志组件进行日志的记录,如每天一个日志文件,但存在存在一个问题即日志文件越来越多,在这种情况下log4j不会自动删除前面的日志文件。解决方式:你可以重写log4j,实现这种自动删除多少天的日志;当然我也可以巧用日志文件的mtime进行日志文件的删除,如以下命令

find /data/soft/xxx/logs  -type f -name "*.log*" -mtime +5 -exec rm -rf {} \;

 -type f是指定文件类型为普通文件。

 -mtime +5是指修改时间距离现在5天的文件。

   -exec rm -f指执行删除匹配出来的文件并且不提示,有的系统需要带单引号,有的不需要。

 

 这样可以实现删除5天前修改过的日志,5天之内修改过的日志不会进行任何处理

 

 

 

分享到:
评论

相关推荐

    linux下find命令-atime,-ctime,-mtime真正含义

    本文将深入解析`find`命令中的三个时间参数:`-atime`, `-ctime`, 和 `-mtime`,以及如何结合这些参数来定位和管理文件。 ### 1. `-atime`(访问时间) `-atime` 参数用于查找在过去n天内被访问过的文件。这里的...

    windows下修改文件的atime、ctime、mtime的python代码

    使用方法: 输入python ModifyAMCtime.py 文件名 可以把文件的时间进行修改。可以修改代码,完成atime、ctime、mtime的自定义修改

    浅谈find命令下的atime,ctime,mtime

    linux下的find命令提供了相当多的查找条件,功能很强大,由于find的功能很强大,所以他的选项也很多,今天我们来细说一下find命令下的三个时间参数atime,ctime,mtime. atime:access time,最近一次访问时间,当使用...

    times:#golang文件时间(atime,mtime,ctime,btime)

    #golang的文件时间 Go在大多数平台上都具有隐藏的时间功能,此存储库使它们易于访问。 package main import ( "log" "github.com/djherbis/times" ) func main () { t , err := times . Stat ( "myfile" ) if ...

    Linux文件三种时间属性.pdf

    Linux 文件系统中的每个文件都具有三种时间属性:状态改动时间(ctime)、修改时间(mtime)和访问时间(atime)。理解这些时间属性的变化是非常重要的,特别是在文件管理和备份中。 状态改动时间(ctime) 状态...

    Linux find 按文件修改时间查找文件

    Linux系统中有三种主要的文件时间戳:访问时间(Access Time)、修改时间(Modification Time)和状态改变时间(Status Change Time),分别对应`atime`、`mtime`和`ctime`。它们的含义如下: - **访问时间(atime...

    linux批量修改文件属性值

    - **时间戳(Timestamps)**:包括访问时间(atime)、修改时间(mtime)和改变时间(ctime)。`touch`命令可用于更新这些时间戳。 2. **批量操作**: - **通配符(Wildcards)**:`*`代表任意多个字符,`?`代表...

    Linux 文件和目录的属性

    每个文件都有三个时间戳:`atime`(最后访问时间)、`mtime`(最后修改时间)和 `ctime`(状态变化时间)。这些时间戳可以帮助管理员追踪文件的状态变化。 #### 10. 文件属性和文件系统属性的关系 文件属性是由文件...

    Linux文件查找命令之find讲解.doc

    - `-atime`和`-ctime`: 根据文件最后访问和状态更改时间查找。 - `-newer file1 ! file2`: 查找更新于`file1`但未更新于`file2`的文件。 - `-type`: 按照文件类型查找,如`b`(块设备)、`d`(目录)、`c`(字符设备...

    如何恢复误删除的Linux文件

    本文将详细介绍 Linux 文件系统结构和恢复误删文件的方法。作为一个多用户、多任务的操作系统,Linux下的文件一旦被删除,是难以恢复的。然而,对于家庭单机使用的 Linux,或者误删文件后及时补救,还是可以恢复的。...

    Linux下查找指定时间内修改过的文件.docx

    在查找指定时间内修改过的文件时,需要使用 `-atime`、`-ctime`、`-mtime` 等选项来限定时间范围。这些选项的作用如下: * `-atime n`:查找在 n 天之前访问过的文件。 * `-ctime n`:查找在 n 天之前状态修改过的...

    LINUX下c语言读取文件信息

    总之,在Linux下用C语言读取文件信息,主要涉及`<sys/stat.h>`头文件中的`stat()`函数,通过它获取的`struct stat`结构体包含了丰富的文件属性。理解并熟练运用这些函数对于进行系统级编程和文件管理至关重要。在yjl...

    VC 获取文件属性

    FILETIME lastAccessTime = status.m_atime; } else { // 文件不存在或无法访问 } } ``` 此外,`CFileFind`类还可以用来遍历目录,获取多个文件的属性。它允许你进行文件名匹配,查找特定类型的文件,如: ```...

    Linux文件系统11

    文件的三个时间戳——mtime(最后修改时间)、ctime(最近状态改变的时间)和atime(最近访问时间)记录了文件的活动历史,`stat`命令可以用于查看这些时间属性。 文件名作为文件的标识,在Linux中存储于父目录的...

    顺藤摸瓜之Linux文件系统

    - `i_atime,i_mtime,i_ctime`:访问时间、修改时间和改变时间。 - `i_blksize,i_blocks`:块大小和占用块数量。 - `i_dentry`:指向目录项的指针。 3. **文件对象(file)**:表示正在被打开的文件的状态。 - `f_...

    Linux文件查找命令find,xargs详述

    - `-mtime`, `-atime`, `-ctime`:根据文件修改、访问、状态改变时间查找。 - `-nogroup`, `-nouser`:查找无有效组或属主的文件。 - `-newer file1 ! file2`:查找比`file1`新且比`file2`旧的文件。 - `-type`:按...

    vc 文件时间/属性操作

    最后访问时间: " << ctime(&fileStat.st_atime); // 设置文件为只读 _chmod("test.txt", _S_IWRITE | _S_IREAD); // 重新获取属性以验证更改 _stat("test.txt", &fileStat); if (_S_IWRITE & fileStat.st_...

Global site tag (gtag.js) - Google Analytics