ハードリンク数
ls -al
と入力して表示される左から2つ目の数値は、ハードリンクの数。
$ ls -al drwxrwxr-x 2 vagrant vagrant 4096 1月 13 05:03 . drwxr-xr-x 11 vagrant vagrant 4096 1月 13 05:03 .. -rw-rw-r-- 1 vagrant vagrant 0 1月 13 05:03 a.txt -rw-rw-r-- 1 vagrant vagrant 0 1月 13 05:03 b.txt
- 2フィールド目の「
2
」「11
」「1
」「1
」という数値はハードリンクの数を表している。 .
はカレントディレクトリを指す。..
はカレントディレクトリの一つ上のディレクトリを指す。
ディレクトリを作ると → ハードリンク数が増える
mkdir c
と入力して、c
というディレクトリを作る。
$ mkdir c
$ ls -al
drwxrwxr-x 3 vagrant vagrant 4096 1月 13 05:05 .
drwxr-xr-x 11 vagrant vagrant 4096 1月 13 05:03 ..
-rw-rw-r-- 1 vagrant vagrant 0 1月 13 05:03 a.txt
-rw-rw-r-- 1 vagrant vagrant 0 1月 13 05:03 b.txt
drwxrwxr-x 2 vagrant vagrant 4096 1月 13 05:05 c
すると、c
ディレクトリは作ったばかりなのに、すでに「2
」のハードリンク数が設定されている。
この理由はカレントディレクトリをc
に移動してls -al
してみると分かる。
$ cd c $ ls -al drwxrwxr-x 2 vagrant vagrant 4096 1月 13 05:05 . drwxrwxr-x 3 vagrant vagrant 4096 1月 13 05:05 ..
このように、すべてのディレクトリには
.
..
という2つの記号が自動生成されるわけだけど、実はこの2つのファイルこそがハードリンク。
つまり、そのディレクトリ直下にディレクトリを作れば作るほど、そのディレクトリのハードリンクの数は増えていくことになる。
$ mkdir d
$ mkdir e
$ mkdir f
$ mkdir g
$ ls -al
drwxrwxr-x 7 vagrant vagrant 4096 1月 13 06:02 . ←ディレクトリを増やした分、ハードリンクの数も増えている
drwxr-xr-x 11 vagrant vagrant 4096 1月 13 05:03 ..
-rw-rw-r-- 1 vagrant vagrant 0 1月 13 05:03 a.txt
-rw-rw-r-- 1 vagrant vagrant 0 1月 13 05:03 b.txt
drwxrwxr-x 2 vagrant vagrant 4096 1月 13 05:05 c
drwxrwxr-x 2 vagrant vagrant 4096 1月 13 06:02 d
drwxrwxr-x 2 vagrant vagrant 4096 1月 13 06:02 e
drwxrwxr-x 2 vagrant vagrant 4096 1月 13 06:02 f
drwxrwxr-x 2 vagrant vagrant 4096 1月 13 06:02 g
本来、ハードリンクはディレクトリには設定できないはず(ファイルにのみ設定できる)だけど、おそらくこれはLinuxの根本的な仕様なんだと思います。
ハードリンクの探し方
ハードリンクの場所はiノード番号で探すことができる。
iノード番号はls
コマンドにi
オプションをつけると表示させることができ(1番目のフィールドの値)、
$ ls -ali 256568 drwxrwxr-x 7 vagrant vagrant 4096 1月 13 06:02 . 67696 drwxr-xr-x 11 vagrant vagrant 4096 1月 13 05:03 .. 256604 -rw-rw-r-- 1 vagrant vagrant 0 1月 13 05:03 a.txt 256606 -rw-rw-r-- 1 vagrant vagrant 0 1月 13 05:03 b.txt 259335 drwxrwxr-x 2 vagrant vagrant 4096 1月 13 05:05 c 259349 drwxrwxr-x 2 vagrant vagrant 4096 1月 13 06:02 d 259350 drwxrwxr-x 2 vagrant vagrant 4096 1月 13 06:02 e 259351 drwxrwxr-x 2 vagrant vagrant 4096 1月 13 06:02 f 259352 drwxrwxr-x 2 vagrant vagrant 4096 1月 13 06:02 g
以下のコマンドで、該当するハードリンクをすべて表示させることができる。
find 検索パス -inum inode番号
おわり
コメント