linuxctime
A. linux文件系统的mtime, ctime有什么区别
首先可以使用stat 命令来查询文件的inode信息,其中包括ctime atime mtime
1.文件的容易理解:
文件的 Access time,atime 是在读取文件或者执行文件时更改的任何对inode的早纳访问都会使此处改变。
文件的 Modified time,mtime 是在写入文件时随文件内容的更改而更改的。
文件的 Change time,ctime 是在写入文件、更改所有者、权限或链接设置时随 Inode 的内容更改而更改的。只要stat出来的内容发生改变就会发生改变。mtime的改变必然导致ctime的改变。
2.文件夹的:
文件夹的 Access time,atime 是在读取文件或者执行文件时更改的(我们只cd进入一个目录然后cd ..不会引起atime的改变,但ls一下就不同了)。
文件夹的 Modified time,mtime 是在文件夹中有文件的新建、***才会改变(如果只是改变文件内容不会引起mtime的改变,换句话说如果ls -f <directory>的结果发生改变mtime就会被刷新。这里可能有人要争论了:我进入dd这个文件夹vi了一个文件然后退出,前后ls -f <directory>的结果没有改变但是文件夹的mtime发生改变了……这液晌点请主意vi命令在编辑文闹睁锋件时会在本文件夹下产生一 个”.file.swp”临时文件,该文件随着vi的退出而被***……这就导致了mtime的改变 [Auxten:p]不信你可以用nano修改文件来试验)。
文件夹的 Change time,ctime 基本同文件的ctime,其体现的是inode的change time。
这里还要补充一点:
mount -o noatime(mount -o remount,atime /
可以在线重新挂载根目录)可以选择不记录文件的atime的改变,这意味着什么呢?
当你创建了这个文件后这个文件的atime就定格了,除非你用 touch或者touch -a强制刷新文件的atime。
这样在可以在一定程度上提升文件系统的读写性能,特别是网站这种系统中在fstab里面加上noatime是个好主意 O(∩_∩)O
如我的
/dev/sda3 / ext3 noatime 0 1
如果你想了解更详细内容,建议看看刘遄老师的另外就是刘遄老师的《linux就该这么学》,书籍当中有详细的描述
B. Linux find命令atime/mtime/ctime参数
通过 touch 命令创建五个日志文件,在Linux系统中,一个文件有三个时间参数,分别是atime,mtime,ctime。
access time(atime):显示的是文件中的数据最后被访问的时间。
modify time(mtime):显示的是文件内容被修改的最后时间。当修改文件的内容数据的时候,就会更新这个时间,而更改权限或者属性,mtime不会改变,这就是和ctime的区别。
change time(ctime):显示的是文件的权限、拥有者、所属的组、链接数发生改变时的时间。当然当内容改变时也会随之改变。
当修改文件内容时,三个时间都发生了改变。
当修改文件权答裂行限时,源卖只有ctime发生了改变。
当前时间27号22:03,
+2 表示的是查找 24号22:03前的文件
+3 表示的是查找 23号22:03前的文件
3 表示的是查找23号22:03 到 24号22:03 之间的清哗文件
-3 表示的查找24号22:03 到 27号22:03之间的文件
C. linux ctime函数会不会造成内存泄漏
ctime函数是不会有内存泄露的问题的,因为它返回的字符串并不是动态分配的内存空和慧毕间,而是函数所提供的静态空间(具体是怎么实现的就不知道了)。之所以这么说,是因为如果多次调用ctime函数,前面一次的调用返回的字符串唤芹空间会被后续的那一次调用所覆盖,而且一本老外写的书上也是说过它返回的碧滑是静态空间。由此,如果想保存ctime的返回结果,最好的使用方法是将返回的字符串复制到另一个字符串中。
D. Linux搜索7天内被访问过的所有文件命令是什么
在linux操作系统中,每个文件都有很多的时间参数,其中有三个比较主要,分别是ctime,atime,mtime
modification time(mtime):
status time(ctime)
accesstime(atime)
-mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime -n +n #按文件访问时间来查GIN: 0px">
-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
当修改文件的内容数据的时候,就会更新这个时间,而更改权限或者属性,mtime不会改变,这就是和ctime的区别
当修改文件的权限或者属性的时候,就会更新这个时间,ctime并不是create time,给我的感觉更像是change time,但这么说也不完全对,因为只有当更新文件的属性或者权限的时候才会更新这个时间,更改内容的话是不会更新这个时间的。《Linux就该这么学》
当使用这个文件的时候就会更新这个时间
7天内被访问过的所有文件命令
# find / -type f-atime -7
E. linux查看和修改文件的时间
1、查看文件大小:
# -sh filename
2、查看文件,文件夹属性:
#ls -l filename
#ls -ld foldername
3、查看文件的三个时间 atime ,ctime, mtime
3.1、 mtime(modification time),修改时间: 这个时间指的是文件内容修改的时间,而不是文件属性的修改,当数据内容修改时,这个时间就会改变,用命令ls -l默认显示的就是这个时间
3.2、ctime(status time ),状态时间:当一个文件的状态改变时,这个时间就会改变,例如更改了文件的权限与属性等,它就会改变。
3.3、atime(access time),访问时间:当读取文件内容时,就会更改这个时间,例如使用cat 去读取/etc/man.config,那么该文件的atime就会改变。
3.4、查看命令:
# ls -l --full-time /etc/man.config mtime
# ls -l --time=atime --full-time /etc/man.config atime
# ls -l --time=ctime --full-time /etc/man.config ctime
4、其他
如果要一起查看文件的三个时间情况,可以用命令stat进行查看
# stat /etc/man.config
F. linux怎么用c获取当前时间
Linux C编程获取当前时间用time这个函数,time函数会返回一个time_t类型的时间戳(这个time_t类型实际上是一个长整型,定义在time.h头文件中)。time函数的函数原型是这样的:
time_t time(time_t *tloc);
使用time函数需要包含time.h头文件:
#include <time.h>
调用time函数的代码是这样的:
time_t t;
t=time((time_t *) 0);
因为time函数参数的作用和返回值一样,只是用于接收时间戳,所以这里调用time函数可以传入一个空指针,表示只用它的返回值,不用指针参数来接收时间戳。
因为time函数只是返回一个时间戳,如果想打印直观的时间信息,可以把刚才的time_t作为参数调用ctime函数,ctime函数会返回一个字符串,ctime函数的调用是这样的:
printf("The time and date is: %s", ctime(&t));
t就是刚才调用time函数返回的time_t类型变量。
G. LINUX下怎样更新文件夹下所有文件的时间戳
在Linux中,文件没有“创建时间”这个说法。Linux中的文件的时间属性只有三个:atime(Access time)、mtime(Modified time)、ctime(Change time)。不过,有时有人把ctime理解为create time(创建时间),这是不对的,为什么呢?因为,我们知道一个文件的创建时间只有一次,按这个理论,创建时间是不允许修改的,即一个文件一旦创建,它的ctime值就固定不变;但事实呢?是可以改变的。 atime指用户上次访问该文件(打开文件查看其中的内容)时的时间,只要一个用户访问该文件(不管以什么方式),atime的值都会改变,比如:修改一个文件的内容,必然要先打开文件,然后才会修改其中的内容,所以,修改一个文件时,不但会更新一个文件的mtime值,也会更新atime的值。 mtime指用户上次修改该文件中的内容的时间,只要用户修改该文件中的内容,那么mtime的值就会被更新。 ctime指该文件的属性上次被改变时的时间。要想查看文件的属性,可以通过ls命令查看,比如:ls -l。例如:你修改该文件的权限了或者改变该文件的硬链接数了,ctime的值都会被更新。但是有一点,ctime的值更新,并不代表atime和mtime的值也更新,比如:你修改文件的权限,但并不代表你访问或修改了文件中的内容。 在做一些相应的操作时,文件的atime、mtime、ctime的值都会自动被更新。 正如前面所说,这些值是可以改变的,所以,我们可以通过touch命令来修改这三个属性的值。其实,touch并不是用来创建一个新的、空的文件的,而是用来修改这三个属性的值的。但为什么创建一个新的、空的文件呢?这是touch附带的一个功能,原因是:如果你提供的目标文件参数并不存在的话,那么touch就会出现错误,为了防止这种情况出现,touch命令就会默认创建一个所提供的目标文件参数;其实其他命令也是如此,有些命令,如果用户没有为它提供参数的话,它就会从标准输入设备读取参数,即让用户从标准输入设备输入参数,这样的命令比比皆是。 要想修改一个文件下的所有文件的时间属性,可以用touch命令,提供一个要修改时间属性类型的参数和时间值,然后跟着该文件夹下的所有文件,引用方式是使用 *(星号),它可以匹配一个文件夹下的所有文件。