Linux文件的atime, mtime, ctime属性以及修改
Linux文件的atime, mtime, ctime属性以及修改
Linux下的文件或目录有三种时间:
访问时间(Atime):记录该文件被访问的最后一次的时间,即Atime。
修改时间(Mtime):当对这个文件内容进行修改后,Modify显示的时间就会更新一次,即Mtime。
状态改变时间(Ctime):当文件的内容、更改文件权限、链接属性时随文件的Inode更改而改变的时间,即Ctime。
一、如何显示文件的这三种时间?
首先我们需要创建好一个test.c文件: touch test.c
1.用ls -l命令:该命令显示的是文件的详细信息。在文件名的前面有一列显示的是时间,这个时间是创建/修改时间。
admin@marvin:~/workspace/test$ ls -l total 0 -rw-rw-r-- 1 admin admin 0 Aug 16 00:13 test.c # Linux下其实是无法通过一般命令查看到创建事件的,但是可以通过atime、mtime、ctime来得到。 # 当没有访问过文件时,atime即为文件的创建时间 # 当没有修改文件内容时,mtime即为文件的创建时间 # 当文件状态没有改变时,ctime为创建时间
2.用stat命令: $stat 文件名
admin@marvin:~/workspace/test$ stat test.c File: test.c Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fc01h/64513d Inode: 1592057 Links: 1 Access: (0664/-rw-rw-r--) Uid: ( 1000/ admin) Gid: ( 1000/ admin) Access: 2022-08-16 00:13:58.649364945 +0800 Modify: 2022-08-16 00:13:58.649364945 +0800 Change: 2022-08-16 00:13:58.649364945 +0800 Birth: -
其中,size表示文件大小,这里只是touch空文件,大小为0
Block表示文件所占用块的大小
regular empty file表示文件的类型
Access 表示文件的访问权限
Inode表示文件的inode节点
Links表示文件的链接数
我们可以看出,在执行这行指令后,不仅仅显示了Atime(Access)、Mtime(Modify)、Ctime(Change),还有其他的
一些信息,比如:文件的大小(Size)、所占块数、文件类型、Inode号、文件权限、以及UID和GID等等。
补充:
1.由于Linux下块的大小是512字节,所占块数 = Block显示数字 / 512
2.GID:GroupID,即组ID,用来标识用户组的唯一标识符(每个组用户也有唯一的组id)
UID:UserId,即用户ID,用来标识每个用户的唯一标识符(每个用户都有唯一的用户id)
下面的几行表示文件的atime、mtime、ctime,最后有一个Birth是看不到的,这个需要用其他方法得到。
再往下看还有三行信息,这就是文件的三种时间,既然已经给出了这三种时间的概念,那我们就举个例子来解释说明一下:
Atime:
admin@marvin:~/workspace/test$ stat test.c File: test.c Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fc01h/64513d Inode: 1592057 Links: 1 Access: (0664/-rw-rw-r--) Uid: ( 1000/ admin) Gid: ( 1000/ admin) Access: 2022-08-16 00:13:58.649364945 +0800 Modify: 2022-08-16 00:13:58.649364945 +0800 Change: 2022-08-16 00:13:58.649364945 +0800 Birth: - admin@marvin:~/workspace/test$ cat test.c admin@marvin:~/workspace/test$ stat test.c File: test.c Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fc01h/64513d Inode: 1592057 Links: 1 Access: (0664/-rw-rw-r--) Uid: ( 1000/ admin) Gid: ( 1000/ admin) Access: 2022-08-16 00:22:44.049744198 +0800 Modify: 2022-08-16 00:13:58.649364945 +0800 Change: 2022-08-16 00:13:58.649364945 +0800 Birth: -
我们可以看到,cat之后,文件的Access时间便发生了变化。
Mtime:
admin@marvin:~/workspace/test$ stat test.c File: test.c Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fc01h/64513d Inode: 1592057 Links: 1 Access: (0664/-rw-rw-r--) Uid: ( 1000/ admin) Gid: ( 1000/ admin) Access: 2022-08-16 00:22:44.049744198 +0800 Modify: 2022-08-16 00:13:58.649364945 +0800 Change: 2022-08-16 00:13:58.649364945 +0800 Birth: - admin@marvin:~/workspace/test$ echo "hello" > test.c admin@marvin:~/workspace/test$ stat test.c File: test.c Size: 6 Blocks: 8 IO Block: 4096 regular file Device: fc01h/64513d Inode: 1592057 Links: 1 Access: (0664/-rw-rw-r--) Uid: ( 1000/ admin) Gid: ( 1000/ admin) Access: 2022-08-16 00:22:44.049744198 +0800 Modify: 2022-08-16 00:24:35.492976183 +0800 Change: 2022-08-16 00:24:35.492976183 +0800 Birth: -
Ctime:
admin@marvin:~/workspace/test$ stat test.c File: test.c Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fc01h/64513d Inode: 1592057 Links: 1 Access: (0664/-rw-rw-r--) Uid: ( 1000/ admin) Gid: ( 1000/ admin) Access: 2022-08-16 00:22:44.049744198 +0800 Modify: 2022-08-16 00:13:58.649364945 +0800 Change: 2022-08-16 00:13:58.649364945 +0800 Birth: - admin@marvin:~/workspace/test$ echo "hello" > test.c admin@marvin:~/workspace/test$ stat test.c File: test.c Size: 6 Blocks: 8 IO Block: 4096 regular file Device: fc01h/64513d Inode: 1592057 Links: 1 Access: (0664/-rw-rw-r--) Uid: ( 1000/ admin) Gid: ( 1000/ admin) Access: 2022-08-16 00:22:44.049744198 +0800 Modify: 2022-08-16 00:24:35.492976183 +0800 Change: 2022-08-16 00:24:35.492976183 +0800 Birth: -
二、如何修改文件的这三种时间?
使用touch指令,不仅可以创建一个文件,还可以修改文件的时间:
格式:touch 参数 文件名 参数: -a:或--time=atime或--time=access或--time=use -c:或--no-creat,如果棉花地文件不存在,也不创建任何文档 -d:使用指定的日期时间,可以使用不同的格式 -m:或--time=mtime或--time=modify,改变修改时间 -r:把指定的文件日期更设成和参考文档或目录日期相同的时间 -t:使用指定的日期时间,格式与date指令相同
以下会通过实例来讲解这些命令的用法:
- 新建一个文件:
touch 文件名
- 修改Atime:
touch -a 文件名
- touch指令创建一个不存在的文件
touch -c 文件名
- 使用指定的日期来修改:
touch -d 时间 文件名 touch -d "时间" 文件名
- 使用-t参数来修改时间:
- 将1.txt文件的时间设置为与test2.c文件相同的时间:
touch -r test2.c 1.txt
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
2017-08-28 精确线搜索-黄金分割法