ハードリンク数
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番号
おわり
コメント