ファイルの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の内容が変更されるたびに、権限、所有者、mtimeを含むctime(inode変更時間)が変更されます。