lsコマンドで表示される左から2番目の数値【ハードリンク数】

ハードリンク数

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番号

 

 

おわり

Linux
スポンサーリンク
この記事を書いた人
penpen

1991生まれ。
2019年くらいからフロントエンドエンジニアを目指している元アフィリエイターです💩

penpenをフォローする
penpenをフォローする
penpenメモ

コメント

タイトルとURLをコピーしました