注:質問には反対と言われていますが、どちらも同じinodeを指し、どちらが頭であり、どちらが尾であるかを区別できないため、実際には意味がありません。
hlh.txtファイルがあるとしましょう。
[root@FREL ~]# fallocate -l 100 hlh.txt
今hlh.txtの変更時間を見ると
[root@FREL ~]# stat hlh.txt
File: hlh.txt
Size: 100 Blocks: 8 IO Block: 4096 regular file
Device: fc00h/64512d Inode: 994 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2023-01-11 01:43:05.469703330 -0500
Modify: 2023-01-11 01:43:05.469703330 -0500
Change: 2023-01-11 01:43:05.469703330 -0500
Birth: 2023-01-11 01:43:05.469703330 -0500
ハードリンクの作成
[root@FREL ~]# ln hlh.txt hlt.txt
hlh.txtとhlt.txtは両方とも同じinodeを指すので、変更時間はハードリンクされたtailファイルの理解できるctimeになります。
[root@FREL ~]# stat hlt.txt
File: hlt.txt
Size: 100 Blocks: 8 IO Block: 4096 regular file
Device: fc00h/64512d Inode: 994 Links: 2
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2023-01-11 01:43:05.469703330 -0500
Modify: 2023-01-11 01:43:05.469703330 -0500
Change: 2023-01-11 01:44:05.316842644 -0500
Birth: 2023-01-11 01:43:05.469703330 -0500
ただし、ヘッダファイルのリンクを解除すると、ファイルのctimeも変更されます。なぜ?私たちがすることはヘッダーを削除することです。ここで時間を変えると何が役に立ちますか?なぜ変更が必要ですか?
[root@FREL ~]# unlink hlh.txt
[root@FREL ~]#
[root@FREL ~]# stat hlt.txt
File: hlt.txt
Size: 100 Blocks: 8 IO Block: 4096 regular file
Device: fc00h/64512d Inode: 994 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2023-01-11 01:43:05.469703330 -0500
Modify: 2023-01-11 01:43:05.469703330 -0500
Change: 2023-01-11 01:47:49.588364704 -0500
Birth: 2023-01-11 01:43:05.469703330 -0500
答え1
これは要件ですライブラリunlink()
機能POSIX経由:
正常に完了したら、
unlink()
更新親ディレクトリの最後のデータ変更と最後のファイル状態変更タイムスタンプを表示する必要があります。また、ファイルのリンク数がゼロでない場合は、ファイルの最後のファイル状態変更タイムスタンプが更新されたものとしてマークする必要があります。
標準文書はこの要件を拡張しません。リンク数が1つ減少したため、ファイルの状態が変更されたことを反映するように、ctimeタイムスタンプ(「最後のファイル状態変更タイムスタンプ」)が更新されたとします。