Linuxのファイルとディレクトリ
どのようなファイルによってLinuxが構成されているか、ファイルの場所をLinuxではどのように表現するか、といったファイルに関する基礎知識について解説します。
Linuxを使う上でファイルに対する知識はとても重要なのでぜひ覚えておいてください!
Linuxはファイルからできている
Linuxで扱うデータは「ファイル」として扱われます。
文章や画像、プログラムなどは全てファイルとして保存されます。
これはWindowsやMacなどと同じですね。
ただし、Linuxはこれらのユーザデータのファイルに加えて、システム全体も一つ一つのファイルとして構成されています。
例えば、ハードディスクやキーボード、ディスプレイといった入出力装置はそれぞれファイルが割り当てられていて、そのファイルを介して機器を操作することになります。
また、Linuxカーネルも1つのファイルです。
このように、Linuxでは全てがファイルとして表現されているので、
Linuxを使いこなすには、まずファイルの操作について十分な知識を持っていなければなりません。
ディレクトリとは
ディレクトリとはファイルを整理する入れ物です。
WindowsやMacでいうフォルダと同じです。
ディレクトリの中にあるディレクトリをサブディレクトリと呼びます。
逆にあるディレクトリから見て一つ上のディレクトリを親ディレクトリと呼びます。
現在いるディレクトリをカレントディレクトリと呼びます。
Linuxのディレクトリ構造
下の図は一般的なLinuxのディレクトリ構造を示しています。
これ以外にも多くのディレクトリが存在しますが、ここでは主要なものについて解説していきます。
一番上の「/」というディレクトリはルートディレクトリと言います。
Linuxのディレクトリ構成はこのルートディレクトリを頂点とした階層構造になっています。
枝分かれしていく構造をしていくことからディレクトリツリーといったりします。
Windowsとの違い
Windowsも同様の階層構造を持っていますが、Linuxと多少異なることがあります。
例えば、システム全体で2台の物理ディスクがあったとします。
Windowsでは2つのディレクトリツリーができます。
一方、Linuxの場合は何台のディスクがあろうがシステム全体で1つのディレクトリツリーしか持たないというところが異なります。
このため、複数のディスクがある場合、Linuxではルートディレクトリ配下のどこかにディスクをディレクトリとしてくっ付けていきます。
この操作を「マウント」と呼びます。
各ディレクトリの役割
ここでは特に重要なものについて紹介します。
ディレクトリ構成はディストリビューションによって若干異なる場合がありますが、ここであげるディレクトリはどのシステムでも同じ役目を果たす代表的なものです。
ちなみに前回インストールしたCentOS7のディレクトリ構造は以下のようになっていました。
/bin
一般ユーザおよび管理者ユーザが利用するコマンドの、実行ファイルを置くためのディレクトリです。
実行ファイルはLinuxのさまざまなディレクトリに配置されていますが、ここにはその中でも特にLinuxシステムの動作に最低限必要な、重要度の高いコマンドを格納しています。
/dev
デバイスファイルを格納するディレクトリです。
デバイスファイルとはディスクやキーボードなどのハードウェアをファイルとして扱えるように用意された特殊なファイルです。
/etc
設定ファイルを置くためのディレクトリです。
Linuxで動作するさまざまなアプリケーションの設定のためには、通常はテキストの設定ファイルが用意されています。
それらの設定ファイルは、通常この/etcは以下に配置されます。
また各種アプリケーションだけでなく、Linux自体の設定に関わるファイルもこのディレクトリにあります。
そのため、Linuxを管理・運用していく上で非常に重要なディレクトリです。
例を一つ挙げると、システムから出てくるアラートなどの情報をネットワークで転送したり、ログとしてファイル保存していく仕組みであるsyslogの設定ファイル(syslog.conf)がこのディレクトリの中にあったりする。
/home
ユーザごとに割り当てられるホームディレクトリが配置されているディレクトリです。
ホームディレクトリとは、Linuxのユーザごとに割り当てられている個人用のディレクトリのことで、ユーザ名がそのままディレクトリ名になります。
例えば、taroというユーザを作成すると/home/taroがホームディレクトリになります。
ユーザはこのディレクトリ内に自由にファイルやディレクトリを作成し、作業することができます。
/sbin
/binと似ていて、これも実行ファイルを置くためのディレクトリです。
ただし、こちらには管理者ユーザ向けのコマンドが置かれています。
例えば、システムをシャットダウンするためのshutdownコマンドなどが/sbinに配置されています。
tmp
一時的なファイル(テンポラリファイル)を置くためのディレクトリです。
アプリケーションの実行中に、作業途中の結果などを一時的にファイルで保存しておく際に使用されるディレクトリです。
このディレクトリのファイルはディストリビューションの設定によっては定期的に削除される場合がありますので、/tmpをファイルの永続的な保存先に使用するのはやめておきましょう。
/usr
各種アプリケーションと、それに付随するファイルを置くためのディレクトリです。
追加でアプリケーションをインストールした場合に、実行ファイルやドキュメント、ライブラリなどがこのディレクトリの下に置かれます。
/usrディレクトリはそのサブディレクトリとしてbinやsbin、etcなどをもちルートディレクトリのサブディレクトリと同じような構造を持っています。
/var
変化する(variable)データを置くためのディレクトリです。
アプリケーションを動作する上で作成されたログやデータ、電子メールなどはこのディレクトリに格納されます。
そのため、たくさんのファイルが書き込まれ、容量が逼迫することが多いため、管理者は運用する上で注意が必要なディレクトリとなります。
なお、Linuxのディレクトリ構成はFHS(Filesystem Hierarchy Standard)という標準仕様に基づいています。より詳しく知りたい方はFNSのWebページより仕様書のダウンロードができますのでご覧ください。Filesystem Hierarchy Standard(http://www.pathname.com/fhs/)
まとめ
ここまで主要なディレクトリの役割について簡単に説明してきました。
ここで紹介したものは基本中の基本なのでエンジニアであれば覚えておくべきです。
今回はディレクトリの役割のみ話してみましたが、実際にそのディレクトリにどんなファイルが格納されているのかを見てみるのも勉強になります。
興味がある方はぜひ実機の方で確認してみてください。
「初心者向けよく使うLinuxコマンド【ディレクトリ移動と確認編】 」でLinuxのディレクトリを移動するためのコマンドを解説しています。ぜひご覧ください。
以上、お疲れ様でした。
コメント