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天之内修改过的日志不会进行任何处理
相关推荐
本文将深入解析`find`命令中的三个时间参数:`-atime`, `-ctime`, 和 `-mtime`,以及如何结合这些参数来定位和管理文件。 ### 1. `-atime`(访问时间) `-atime` 参数用于查找在过去n天内被访问过的文件。这里的...
使用方法: 输入python ModifyAMCtime.py 文件名 可以把文件的时间进行修改。可以修改代码,完成atime、ctime、mtime的自定义修改
linux下的find命令提供了相当多的查找条件,功能很强大,由于find的功能很强大,所以他的选项也很多,今天我们来细说一下find命令下的三个时间参数atime,ctime,mtime. atime:access time,最近一次访问时间,当使用...
#golang的文件时间 Go在大多数平台上都具有隐藏的时间功能,此存储库使它们易于访问。 package main import ( "log" "github.com/djherbis/times" ) func main () { t , err := times . Stat ( "myfile" ) if ...
Linux 文件系统中的每个文件都具有三种时间属性:状态改动时间(ctime)、修改时间(mtime)和访问时间(atime)。理解这些时间属性的变化是非常重要的,特别是在文件管理和备份中。 状态改动时间(ctime) 状态...
Linux系统中有三种主要的文件时间戳:访问时间(Access Time)、修改时间(Modification Time)和状态改变时间(Status Change Time),分别对应`atime`、`mtime`和`ctime`。它们的含义如下: - **访问时间(atime...
- **时间戳(Timestamps)**:包括访问时间(atime)、修改时间(mtime)和改变时间(ctime)。`touch`命令可用于更新这些时间戳。 2. **批量操作**: - **通配符(Wildcards)**:`*`代表任意多个字符,`?`代表...
每个文件都有三个时间戳:`atime`(最后访问时间)、`mtime`(最后修改时间)和 `ctime`(状态变化时间)。这些时间戳可以帮助管理员追踪文件的状态变化。 #### 10. 文件属性和文件系统属性的关系 文件属性是由文件...
- `-atime`和`-ctime`: 根据文件最后访问和状态更改时间查找。 - `-newer file1 ! file2`: 查找更新于`file1`但未更新于`file2`的文件。 - `-type`: 按照文件类型查找,如`b`(块设备)、`d`(目录)、`c`(字符设备...
本文将详细介绍 Linux 文件系统结构和恢复误删文件的方法。作为一个多用户、多任务的操作系统,Linux下的文件一旦被删除,是难以恢复的。然而,对于家庭单机使用的 Linux,或者误删文件后及时补救,还是可以恢复的。...
在查找指定时间内修改过的文件时,需要使用 `-atime`、`-ctime`、`-mtime` 等选项来限定时间范围。这些选项的作用如下: * `-atime n`:查找在 n 天之前访问过的文件。 * `-ctime n`:查找在 n 天之前状态修改过的...
总之,在Linux下用C语言读取文件信息,主要涉及`<sys/stat.h>`头文件中的`stat()`函数,通过它获取的`struct stat`结构体包含了丰富的文件属性。理解并熟练运用这些函数对于进行系统级编程和文件管理至关重要。在yjl...
FILETIME lastAccessTime = status.m_atime; } else { // 文件不存在或无法访问 } } ``` 此外,`CFileFind`类还可以用来遍历目录,获取多个文件的属性。它允许你进行文件名匹配,查找特定类型的文件,如: ```...
文件的三个时间戳——mtime(最后修改时间)、ctime(最近状态改变的时间)和atime(最近访问时间)记录了文件的活动历史,`stat`命令可以用于查看这些时间属性。 文件名作为文件的标识,在Linux中存储于父目录的...
- `i_atime,i_mtime,i_ctime`:访问时间、修改时间和改变时间。 - `i_blksize,i_blocks`:块大小和占用块数量。 - `i_dentry`:指向目录项的指针。 3. **文件对象(file)**:表示正在被打开的文件的状态。 - `f_...
- `-mtime`, `-atime`, `-ctime`:根据文件修改、访问、状态改变时间查找。 - `-nogroup`, `-nouser`:查找无有效组或属主的文件。 - `-newer file1 ! file2`:查找比`file1`新且比`file2`旧的文件。 - `-type`:按...
最后访问时间: " << ctime(&fileStat.st_atime); // 设置文件为只读 _chmod("test.txt", _S_IWRITE | _S_IREAD); // 重新获取属性以验证更改 _stat("test.txt", &fileStat); if (_S_IWRITE & fileStat.st_...