このエントリーをはてなブックマークに追加
スポンサーリンク

Linuxを構成するファイル

root直下にあるディレクトリ

Windowsではインストール直後に、c:\windows、 c:\Program Files、c:\Documents and Settingsなどが作成されていると思います。Linuxでも同様で、インストールするとルートディレクトリ直下にディレクトリがいくつか作られます。ディストリビューションにより異なりますが、主なものは以下のものです。
sbin
bin
etc
lib
lib64
mnt
media
proc
tmp
var
boot
dev
home
root
usr
Linuxを操作するためには、まずどのディレクトリにどんな役目のファイルが入っているかを把握しなければなりません。この章では、どのディレクトリにどんな役目のファイルが入ってるかを説明してゆきたいと思います。

※以後説明する内容はディストリビューションによっても異なりますし、インストールの仕方によっても違います。あくまで一般的な例として見てください。

sbin bin

ともにコマンドの格納用のディレクトリです。起動時にパスが設定され、直接叩く事で実行されます。

例)
route (/sbin/routeが実行される)
ls (/bin/lsが実行される)

sbinは管理用コマンド、binはその他のコマンドを入れる事になっています。いずれもroot直下にあるものはLinux標準コマンドという位置にあります。それに対して、/usr/binや/usr/sbinはサードパーティーの作った外部コマンドという意味あいが強いです。ただし、Linuxのディストリビューションとは、もともとがさまざまな人が作ったコマンドを集めたものなので、サードパーティ製のコマンドが標準コマンドに格上げになる事もあります。

etc

その他もろもろ・・という意味ですが、Linuxでは/etc直下にあるものはLinuxが標準で使う設定ファイルであり、起動・動作に必須ものもの少なくありません。

サードパーティ製のコマンドは、/usr/local/そのアプリ/confみたいな独自のディレクトリに設定ファイルが格納される事が多いですが、ディストリビューションにrpmとして標準搭載された場合は、/etc直下に昇進する事もあります。

Linuxの設定ファイルはとほんどがテキストファイルで、エディタで用意に書き換えが可能なのが特徴です。(ただし、/etc/mail以下にある多くのファイルのように、ハッシュになっている場合もあります)

lib lib64

主にshared object(.soファイル)を格納するディレクトリです。

.soファイルは、Windowsでいうところのダイナミックリンクファイル(.dll)です。ダイナミックリンクファイルとは、プログラムのコンパイル時ではなく実行時にリンクされるライブラリの事です。こうする事で各プログラムで共通に使う関数が、それぞれのプログラム内部にリンクされる事なく共通で使われます。

Linuxの場合、.soファイルにはlibglib-2.0.so.0.1200.3みたいなバージョン番号を伴うケースが多いです。これは、下位互換が損なわれているために、同じライブラリの異なるバージョンを共存させたいケースや、より上位のバージョンが必要な際に誤ってリンクしないようにするためです。

lib64は64ビット版サーバーで作られるディレクトリで、64ビット版のライブラリが格納されます。

mnt media

Windowsではプライマリーのマスター(パラレルATAの場合)をc:とし、CD-ROMやフロッピーはe:とかa:とかの装置名で分けますが、Linuxの場合はルートディレクトリとして使われるハードディスク以外の装置は、ルート以下にある別のディレクトリにマウントして使います。

mntやmediaはそのマウントポイント用に使われます。RedHatやCentOSでは/media/cd-romや/media/cd-recorderなどがインストール時に作られていると思います。(cd-romやレコーダーが接続されていれば)

proc

/proc以下のファイルは装置ドライバが現在の状況を報告するためのディレクトリです。例えば、cat /proc/mdstatとすれば現在のRAIDの状況が表示されます。(ソフトRAIDの場合は)

tmp

いわゆるテンポラリーファイル置き場です。プログラムが一時的に使うファイルを置く場所です。/tmp以下は定期的にcronで掃除されますので、/tmp以下に消えちゃ困るファイルやディレクトリを置かないようにしてください。

var

varつまり変動するファイルを置くところです。

/var/log
ログ置き場です。ログというのは、常駐プロセスがどういう動作をしたのか、また、どんなエラーが起きたのかを人間に知らせるために記録するファイルです。例えば、/var/log/maillogには、いついつの何時何分何秒にメールを送った、受けた、拒絶した、という記録が残されます。

/var/run
ロックファイルが格納されます。ロックファイルとはプロセスの多重起動を防ぐためのもので、そのファイルがあれば現在そのプロセスは起動中だという意味になります。大抵はそのサーバーのプロセスIDが格納されます。

/var/spool
スプール用ディレクトリで、例えば受信メール本体や、メールのキュー(送信待ちファイル)が格納されます。

boot

Linuxを起動する時に使われます。/bootを別パーティションにする場合は、起動ディスクの最初のセクタに起きます。(/bootをルートと共通のパーティションににするのであれば、ルートを起動ディスクの最初にセクタにします。)

ブートローダー(grubかlilo)、カーネル、起動時に使う設定ファイル、が入ります。

dev

mnt mediaの所で説明した通り、Linuxでは装置はファイルのように扱います。例えば、
mount /media/cdrom
のようにしてCD装置を/media/cdromにマウントさせて使います。

プリンターのような出力専用の装置には、マウントさせずともcat ファイル名 > /dev/lp0のように直接プリンター装置にリダイレクトする事もできます。

特殊な例として、/dev/nullというのがあり、この装置に対して出力すると、中身は捨てられます。例えば、CORNで実行結果を何も出力させたくない場合は、コマンドの後に > /dev/null 2>&1のようにnull装置にリダイレクトする事により何も出力させずにコマンドを実行させる事ができます。

home

Linuxは複数のユーザーが同時に使う事が想定されたOSです。各ユーザーが全てのディレクトリにアクセスできるようにするケースは稀で(ログインする可能性があるユーザーがサーバー管理者しかいないという場合は別として)、大抵はユーザーごとに使えるディレクトリが限られています。また、サーバー管理者であっても、ログイン直後は自分のディレクトリ(ホームディレクトリ)がカレントになっていると思います。

/home以下にはそれぞれユーザーのホームディレクトリが入ります。例えば、adminユーザーのホームディレクトリは/home/adminという具合にです。

root

ユーザーのホームディレクトリは/home以下に入りますが、rootユーザーは特別に/home以下ではなく/root以下にあります。これは、ルートユーザーのホームディレクトリは一般ユーザーのディレクトリからは別階層にしたいからです。これが/homeと同じ階層にあると、別ユーザーによって/home/rootを削除されてしまう危険性が高くなってしまいます。

また、/homeを別装置(つまり違うハードディスク)にしたい場合に、/homeだけ外付けのハードディスクにしておいて、基本設定終了後にマウントさせたい事があると思います。その際に、少なくともルートのホームディレクトリは必要ですので、/rootが/homeとは別の場所にあると便利です。

usr

Windowsで言うところの、\Program Filesみたいな所で、ユーザー(というかサードパーティー)の作成したプログラムが入ります。apacheは、ソースをコンパイルしてインストールするとデフォルトでは/usr/local/apacheに入るようになっています。同様に、PostgreSQLなどは/usr/local/pgsqlです。

Linuxそのものが使うコマンドは、/bin以下にありますが、標準でついてないコマンドは/usr/binや/usr/sbinに入ります。もっと標準でない場合は、/usr/local/binや、/usr/local/sbinに入ります。

サードパーティーのソフトが標準搭載のrpmに昇格した場合(例えば、rpmでついてくるapache)などは、/usr以下ではなく/etc、/varというシステムディレクトリを使う場合もあります。
スポンサーリンク