HOMEサンプル問題・例題解説101試験の例題と解説104.6 ハードリンクとシンボリックリンクを作成・変更する

101試験の例題と解説

104.6ハードリンクとシンボリックリンクを作成・変更する

今回は、101試験の出題範囲から「104.6 ハードリンクとシンボリックリンクを作成・変更する」についての例題を解いてみます。

■例題
ファイルfileに対するシンボリックリンクslinkを作成するコマンドとして正しいものを選びなさい。

1. ln file slink
2. ln slink file
3. ln -s file slink
4. ln -s slink file
5. ln -s file

解答と解説

答えは 3. ln -s file slink になります。

シンボリックリンクはlnコマンドを使って作成します。lnコマンドのデフォルトの動作はハードリンクの作成となっているので、シンボリックリンクを作成するには-sオプションが必要です。

ハードリンクとシンボリックリンクの違いはなんでしょうか。ハードリンクはファイルシステム上に存在するファイルの実体に対してリンクするのに対して、シンボリックリンクは実体に対してリンクするのではなくファイルの在処(パス名)を持っているだけです。

この仕組みの違いは、制約として表れます。
ハードリンクは同じ物理ボリューム(パーティション)上でしか作成できません。たとえばハードディスクが2台あった時、別のハードディスクに存在するファイルに対してハードリンクを作ることはできません。
シンボリックリンクはパス名を持っているだけですので、ハードリンクのような物理的な制約は受けませんが、リンク先のファイルが存在することは保証されていないので「リンク切れ」を起こすことがあります。

シンボリックリンクはlsコマンドに-lオプションをつけて実行すれば種類が「l」になるので簡単に分かりますが、ハードリンクを見つけるにはちょっとしたコツが必要です。ハードリンクは実体を共有する方法として同じiノード番号を割り当てるという方法を使っているので、この方法を使って探してみましょう。
たとえば以下のコマンドを実行して、先頭に表示されるiノード番号が同じものを探します。

$ ls -i | sort | less

lsコマンドにつけている-iオプションはiノード番号も一緒に表示するという意味です。
すると、以下のファイルが見つけられます。

32361 gunzip
32361 gzip
32361 zcat
※iノード番号はシステムによって異なります。

この3つはどれもgzip形式のファイルを取り扱うコマンドです。実はプログラムの実体は1つのファイルで、ハードリンクを使って別々の呼び名を持ち、役割を変えるようなプログラムになっていたのです。

■学習のポイント
ハードリンクやシンボリックリンクの仕組み的な違いをしっかりと理解しましょう。

ハードリンクを理解するには、Linuxのファイルシステムが採用している「iノード」という考え方が重要となります。ファイルシステムにまつわるトラブルシューティングで知識として必要になるので、こちらも合わせて調べておくとよいでしょう。

  • 今回の解説について、理解できないポイントがあればどんどん質問を。
  • 採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。
  • ご質問・ご意見はこちら
  • ※上記の解説とその内容については、例題作成者の監修です。
    内容や試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。

このページのトップへ