私のUbuntuシステムはをprueba.txt
使用しますtouch prueba.txt
。を使用してファイル統計を表示すると、stat prueba.txt
出力は次のようになります。
File: prueba.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fc01h/64513d Inode: 4092 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-10-07 13:04:57.621272608 +0000
Modify: 2022-10-07 13:04:57.621272608 +0000
Change: 2022-10-07 13:04:57.621272608 +0000
Birth: 2022-10-07 13:04:57.621272608 +0000
次に、を使用してファイルの内容を印刷しcat prueba.txt
てからstat prueba.txt
再度実行すると、出力は次のようになります。
File: prueba.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fc01h/64513d Inode: 4092 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-10-07 13:06:18.852005488 +0000
Modify: 2022-10-07 13:04:57.621272608 +0000
Change: 2022-10-07 13:04:57.621272608 +0000
Birth: 2022-10-07 13:04:57.621272608 +0000
時間はAccess
変わりましたが、Change
時間は変わりませんでした。ただし、man 7 inode
このファイルのメタデータを説明するトピックには、意味に関する次の情報が表示されますChange
。
Last status change timestamp (ctime)
stat.st_ctime; statx.stx_ctime
This is the file's last status change timestamp. It is changed by writing or by setting inode informa‐
tion (i.e., owner, group, link count, mode, etc.).
私が理解したことが正しい場合は、Change
ファイルデータがあるたびに時間を更新する必要があります。またはメタデータ(おそらく)Access
メタデータを含む修正されました。それではcat
、ファイルがメタデータ値に影響しますが、Access
プロセスでメタデータが変更されないのはなぜですか?このトピックが何を意味するのか、どのように機能するのかChange
誤解しましたか?man
cat
答え1
Linuxは各ファイルに対して3つのタイムスタンプを保持します。
- 時間:ファイルの内容(データ自体)が最後に変更された時刻です。を通して見ることができます。
ls -l
- 時間:ファイルコンテンツまたはファイルメタデータ(所有者、グループ、権限、リンク数など)が最後に変更された時間。これにはタイムスタンプは含まれません。を通して見ることができます。
ls -lc
- アルテム:内容を読み取るためにファイルに最後にアクセスした時間。を通して見ることができます。
ls -lu
期待どおりにatimeを変更してファイルを読み込みますcat
。この操作中にファイルの内容やメタデータは変更されないため、対応するctimeは変更されません。