• 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为创建时间
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    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: -
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    其中,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: -
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    我们可以看到,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: -
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    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: -
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    二、如何修改文件的这三种时间?

    使用touch指令,不仅可以创建一个文件,还可以修改文件的时间:

    格式:touch 参数  文件名
    参数:
    -a:或--time=atime或--time=access或--time=use
    -c:或--no-creat,如果棉花地文件不存在,也不创建任何文档
    -d:使用指定的日期时间,可以使用不同的格式
    -m:或--time=mtime或--time=modify,改变修改时间
    -r:把指定的文件日期更设成和参考文档或目录日期相同的时间
    -t:使用指定的日期时间,格式与date指令相同
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    以下会通过实例来讲解这些命令的用法:

    1. 新建一个文件:
      touch 文件名
    2. 修改Atime:
      touch -a 文件名
    3. touch指令创建一个不存在的文件
      touch -c 文件名
    4. 使用指定的日期来修改:
    touch -d  时间  文件名
    touch -d "时间"  文件名
    
    • 1
    • 2
    1. 使用-t参数来修改时间:
    2. 将1.txt文件的时间设置为与test2.c文件相同的时间:
      touch -r test2.c 1.txt
  • 相关阅读:
    卢松松近期短视频转型分享
    跟着森老师学React Hooks(1)——使用Vite构建React项目
    corosync-qdevice使用
    MySQL:删除重复记录、插入不重复记录
    Node.js | 详解 Cookie-Session登录验证 的工作原理
    webpack定制化 加载与插件[css加载器、html插件、image打包配置、babel代码兼容、vue加载器及配置]
    CANoe的数据回放(Replay Block),还是要结合CAPL脚本才能说的明白
    【Eigen】Chapter4 几何模块 Geometry
    朗强:高清视频HDMI延长器的特点
    uni-app : 生成三位随机数、自定义全局变量、自定义全局函数、传参、多参数返回值
  • 原文地址:https://blog.csdn.net/cclethe/article/details/126357403