UNIXでは、ハードリンクはどのように計算されますか? [コピー]

UNIXでは、ハードリンクはどのように計算されますか? [コピー]

UNIXでディレクトリを作成すると、2つのハードリンクがあります。.1つ..は自分自身のもの、もう1つは親ディレクトリのものです。

.ディレクトリのインクリメントカウンタを読み取ると、..親ディレクトリのハードリンクカウンタがインクリメントされます。

したがって、.ディレクトリでのみ計算されます。ただし、これを行うと、まだ2つのハードリンクがありますls -l。第二は何ですか?誰かがディレクトリのハードリンクがどのように計算されるのか教えてください。次の階層があると想像してください。

parent    - 4 hard links
.
. child_1 - 2 hard links
.
. child_2 - 2 hard links

答え1

child1child1親エントリとのエントリ.のため、2つのリンクがありますchild1

説明されている黄道帯の標識の中には、一般的に次のものがparentあります。4つリンク(3ではありません)。他の親の子なので(ルートではない場合):

$ find parent | xargs stat -c "%h %n"  # %h=link count, %n=name
4 parent
2 parent/child2
2 parent/child1

答え2

わかりました、私は講師にこう尋ねました。

.ディレクトリ自体の数を1ずつ増やします。..親ディレクトリの数を1ずつ増やします。ディレクトリ名もディレクトリへのハードリンクなので、新しいサブディレクトリには2つのハードリンクがあります。

関連情報