文件的 atime、mtime 或 ctime 的更改有何影响
- 其父目录的 atime、mtime 或 ctime 以及
- 其祖先目录的 atime、mtime 或 ctime?
答案1
您可以使用 轻松获取该信息stat
。至于祖先目录,可以通过查看以下内容轻松检查是否文件发生更改,这不会影响“层次结构之上”的任何内容/
:
root@pooh:/home/anthon-mint# stat /
File: ‘/’
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 804h/2052d Inode: 2 Links: 30
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2015-02-22 09:57:14.028146463 +0100
Modify: 2015-01-01 10:34:05.528461374 +0100
Change: 2015-01-01 10:34:05.528461374 +0100
Birth: -
由于系统不断更改文件,这些值应该接近当前时间。
如果创建一个新目录,然后在其中创建一个文件,则该目录的访问和修改时间会发生变化:
$ mkdir tmp
$ stat tmp
File: ‘tmp’
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 700h/1792d Inode: 144141 Links: 2
Access: (0775/drwxrwxr-x) Uid: ( 1001/ anthon) Gid: ( 100/ users)
Access: 2015-02-27 16:19:02.523585508 +0100
Modify: 2015-02-27 16:19:02.523585508 +0100
Change: 2015-02-27 16:19:02.523585508 +0100
Birth: -
$ touch tmp/bla
$ stat tmp
File: ‘tmp’
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 700h/1792d Inode: 144141 Links: 2
Access: (0775/drwxrwxr-x) Uid: ( 1001/ anthon) Gid: ( 100/ users)
Access: 2015-02-27 16:19:02.523585508 +0100
Modify: 2015-02-27 16:19:18.639585445 +0100
Change: 2015-02-27 16:19:18.639585445 +0100
Birth: -
访问时间不会改变,但新文件的创建会改变修改和更改时间。
现在再次触摸该文件:
$ touch tmp/bla
$ stat tmp
File: ‘tmp’
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 700h/1792d Inode: 144141 Links: 2
Access: (0775/drwxrwxr-x) Uid: ( 1001/ anthon) Gid: ( 100/ users)
Access: 2015-02-27 16:19:02.523585508 +0100
Modify: 2015-02-27 16:19:18.639585445 +0100
Change: 2015-02-27 16:19:18.639585445 +0100
Birth: -
$
目录不会更改,但目录的任何信息都不会更改,因为没有创建新文件。
更改某个对象的 mtime、atime 或 ctime现有文件对其所在目录以及该目录的任何父目录没有影响。
答案2
如果文件的 inode 尚未在缓存中,则最多会更新目录的 atime(访问时间)字段。然而,现代 Linux 内核的默认设置是使用该relatime
标志挂载文件系统,这意味着只有在修改时间 (mtime) 之后访问文件或目录并且当前 atime 早于 mtime 时,atime 才会更新。
mtime(修改时间)仅在目录实际被修改时才会更新,例如文件(或目录或其他条目)被删除、重命名或添加,或者目录被重命名(移动)。
每当目录 inode 中的任何内容发生更改时,ctime(inode 更改时间)都会被修改,包括权限、所有者以及 mtime...