hier -
ファイルシステム階層の説明
典型的な Linux system
には以下のようなディレクトリがある
(他にもたくさんのディレクトリがあるが):
- /
- ルートディレクトリ。ここが階層の起点となる。
- /bin
- このディレクトリには、シングルユーザーモードで
システムの起動や修理を行う際に必要な実行形式ファイルが含まれる。
- /boot
- ブートローダーが用いる静的なファイルが含まれている。
このディレクトリにはブートプロセスの間に必要なファイルだけが置かれる。
マップインストーラや設定ファイルは
/sbin や /etc
に置くべきである。
- /dev
- 物理デバイスを参照している
スペシャルファイルやデバイスファイルの置き場所。
mknod(1)
を参照のこと。
- /etc
- マシン固有の設定ファイルが置かれる場所。X11
のような
大規模なソフトウェアパッケージでは、
/etc
以下に更にパッケージ単位でサブディレクトリが作られることもある。
サイト全体に有効な設定ファイルは、ここではなく
/usr/etc
に置かれることもある。
しかし、プログラムからのこれらのファイルの参照先は、常に
/etc
にすべきである。
/usr/etc
以下のファイルに対しては、それらへのリンクを
/etc に置けばよい。
- /etc/opt
-
/opt
にインストールされたアドオンアプリケーションが使う、
ホスト固有の設定ファイルの置き場所。
- /etc/sgml
- SGML や XML
の設定ファイルの置き場所
(なくてもよい)。
- /etc/skel
- 新たにユーザーアカウントを作る際、
通常このディレクトリにあるファイルが
ユーザーのホームディレクトリにコピーされる。
- /etc/X11
- X11 window system
の設定ファイルの置き場所
(なくてもよい)。
- /home
- 通常、ユーザーのホームディレクトリが、
このディレクトリ直下ないしサブディレクトリの下に作成される。
このディレクトリの構成をどうするかは、
ローカルマシンの管理者が決めることである。
- /lib
- このディレクトリには、システムの起動時に必要な共有ライブラリや、
ルートファイルシステムでコマンドを実行するのに必要な共有ライブラリを置く。
- /media
- このディレクトリには、
CD/DVD ディスクや USB
スティックなどの取り外し可能メディア
(removable media)
用のマウントポイントが置かれる。
- /mnt
- このディレクトリは、一時的にマウントするファイルシステム用の
マウントポイントである。
ディストリビューションによっては、一時的にマウントするファイルシステム用の
マウントポイントとして、
/mnt
内にサブディレクトリが用意されている場合がある。
- /opt
- このディレクトリにはアドオンパッケージの静的なファイルが置かれる。
- /proc
- このディレクトリは
proc
ファイルシステムのマウントポイントである。
proc
ファイルシステムは、実行中プロセスやカーネルの情報を提供する。
この疑似ファイルシステムの詳細は、
proc(5)
で説明されている。
- /root
- 通常ここが root
ユーザーのホームディレクトリになる
(なくてもよい)。
- /sbin
-
/bin と同様に、
このディレクトリにはシステムの起動に必要なコマンドが含まれる。
ただしここには、一般ユーザーは通常実行しないコマンドが置かれる。
- /srv
- このディレクトリには、このシステムで提供される
サイト固有のデータが置かれる。
- /tmp
- このディレクトリには、
定期的なジョブによって、またはシステム起動時に、
無条件に削除して構わない一時的なファイルが置かれる。
- /usr
- 通常このディレクトリは、独立したパーティションがマウントされる。
ここには、共有可能で読み込み専用のものだけが含まれ、
よっていろいろな Linux
マシンからマウントできる。
- /usr/X11R6
- X Window System, Version 11 release 6
(なくてもよい)。
- /usr/X11R6/bin
- X Window System
のバイナリの置き場所。
古いディレクトリである
/usr/bin/X11
からここにシンボリックリンクが張られていることが多い。
- /usr/X11R6/lib
- X Window System
に関連するデータファイルの置き場所。
- /usr/X11R6/lib/X11
- ここには X
の動作に必要な種々のファイルが含まれている。
/usr/lib/X11
からここにシンボリックリンクが張られていることが多い。
- /usr/X11R6/include/X11
- ここには X11 Window System
を使ったプログラムをコンパイルするために
必要なインクルードファイルが含まれている。
/usr/include/X11
からここにシンボリックリンクが張られていることが多い。
- /usr/bin
- このディレクトリは、実行形式ファイルの主な置き場所である。
システムのブートやシステム復旧には必要とされない、
一般ユーザーが利用するコマンドの多くは、
ローカルにインストールされるのでない限り、
このディレクトリに置くべきである。
- /usr/bin/X11
- X11
コマンドの伝統的な置き場所。Linux
では、通常 /usr/X11R6/bin
にシンボリックリンクが張られている。
- /usr/dict
-
/usr/share/dict
に置き換えられた。
- /usr/doc
-
/usr/share/doc
に置き換えられた。
- /usr/etc
- サイト内部の複数のマシンが共有するような設定ファイルが置かれる。
しかしながら、コマンドはそれらのファイルの参照先を、常に
/etc
にすべきだろう。
/etc
のファイルからリンクを張って、
/usr/etc
の適切なファイルを指すようにすべきである。
- /usr/games
- ゲームプログラムや教育用プログラムのバイナリが含まれている
(なくてもよい)。
- /usr/include
- C
コンパイラ用のインクルードファイルが含まれている。
- /usr/include/X11
- C コンパイラと X Window
System
用のインクルードファイルが含まれている。
通常これは /usr/inlcude/X11
へのシンボリックリンクになっている。
- /usr/include/asm
- アセンブラ関数の宣言を行うインクルードファイルが含まれている。
このディレクトリは、以前は
/usr/src/linux/include/asm
へのシンボリックリンクだった。
- /usr/include/linux
- ここには、システムのリリースのたびごとに変更されうる情報が含まれる。
ここは以前は
/usr/src/linux/include/linux
にシンボリックリンクされており、
オペレーティングシステム固有の情報が得られるようになっていた。
(ここに置くインクルードファイルは、
現在の libc
およびユーザー空間で正しく動作するものでなければならない。
しかし Linux
のカーネルソースは
ユーザープログラムといっしょに使うようには設計されていないし、
あなたが使っている
libc も関知しない。
/usr/include/asm と /usr/include/linux
を適当なカーネルツリーへのリンクにしたりすると、破綻するのは目に見えている。
Debian
ではこうせずに、libc*-dev
package が提供する、
安定したカーネルバージョンのヘッダーファイルを置いている。)
- /usr/include/g++
- GNU C++
コンパイラ用のインクルードファイルが含まれている。
- /usr/lib
- オブジェクトライブラリ
(ダイナミックライブラリも含む)
と、
直接には起動されないような実行形式ファイル少々とが置かれる。
複雑なプログラムでは、更にサブディレクトリがあるかもしれない。
- /usr/lib/X11
- X
のプログラムに関連するデータファイルと、
X Window System
の設定ファイルの置き場所。
Linux では通常 /usr/X11R6/lib/X11
にシンボリックリンクが張られている。
- /usr/lib/gcc-lib
- GNU C コンパイラ
gcc(1)
用の実行形式ファイルとインクルードファイルが含まれている。
- /usr/lib/groff
- GNU groff
文書整形システムのためのファイルが含まれている。
- /usr/lib/uucp
-
uucp(1)
のためのファイルが含まれている。
- /usr/local
- このディレクトリは、
サイトローカルなプログラムがインストールされる典型的な場所である。
- /usr/local/bin
- サイトローカルなプログラムが含まれている。
- /usr/local/doc
- サイトローカルなドキュメントが含まれている。
- /usr/local/etc
- サイトローカルにインストールされたプログラムの設定ファイルの置き場所。
- /usr/local/games
- サイトローカルにインストールされたゲームのバイナリの置き場所。
- /usr/local/lib
- サイトローカルにインストールされたプログラムの関連ファイルの置き場所。
- /usr/local/include
- ローカルな C
コンパイラのヘッダーファイルの置き場所。
- /usr/local/info
- サイトローカルにインストールされたプログラムの
info
ページの置き場所。
- /usr/local/man
- サイトローカルにインストールされたプログラムのマニュアルページの置き場所。
- /usr/local/sbin
- サイトローカルにインストールされたシステム管理コマンドの置き場所。
- /usr/local/share
- 同じ OS
ならアーキテクチャーが異なっても共有できる、
ローカルなアプリケーションデータの置き場所。
- /usr/local/src
- サイトローカルにインストールされたソフトウェアのソースコードの置き場所。
- /usr/man
-
/usr/share/man
に置き換えられた。
- /usr/sbin
- このディレクトリには、システム管理コマンドが含まれる。
ここに置かれるコマンドは、ブートプロセスや
/usr
のマウント、システムの修理などに必要なものであってはならない。
- /usr/share
- このディレクトリには、アプリケーションごとに固有なデータ
(同じ OS
ならアーキテクチャーが違っていても共有できるもの)
がサブディレクトリ単位で置かれる。
以前には /usr/doc, /usr/lib,
/usr/man
などにあった内容が、多くここに置かれている。
- /usr/share/dict
- スペルチェッカ用の単語リストが含まれる。
- /usr/share/doc
- インストールされたプログラムのドキュメントの置き場所。
- /usr/share/games
-
/usr/games
に置かれたゲーム用の静的なデータファイルの置き場所。
- /usr/share/info
- info
ページが置かれる。
- /usr/share/locale
- ロケール (locale)
情報が置かれる。
- /usr/share/man
- マニュアルページ。各ページはセクションに応じたサブディレクトリに置かれる。
- /usr/share/man/<locale>/man[1-9]
- これらのディレクトリには、
各ロケールのマニュアルページのソースが置かれている。
すべてのマニュアルページで同じ言語とコードセットを使用するシステムでは、
<locale>
は省略されることがある。
- /usr/share/misc
- 同じ OS
ならアーキテクチャーが違っていても共有できる、雑多なデータの置き場所。
- /usr/share/nls
- 母国語サポート
(native language support)
用のメッセージカタログの置き場所。
- /usr/share/sgml
- SGML や XML
のファイルの置き場所。
- /usr/share/terminfo
- terminfo
のデータベースが置かれる。
- /usr/share/tmac
- groff
と一緒には配布されていない
troff
マクロの置き場所。
- /usr/share/zoneinfo
- タイムゾーン情報のファイルが置かれる。
- /usr/src
- システム上の色々なコンポーネントのソースファイル
(参照用のパッケージも含む)
の置き場所。
この場所で自分のプロジェクトの作業をしてはいけない。
/usr
以下のファイルはソフトウェアのインストールの時以外は
読み込み専用になっているべきだからである。
- /usr/src/linux
- かつてはカーネルソースの伝統的な置き場所だった。
ディストリビューションによっては、
出荷時のデフォルトのカーネルのソースをここに置いている。
自分でカーネルをビルドするときは別の場所を使うほうがいいだろう。
- /usr/tmp
- 今では用いられなくなった。このディレクトリは
/var/tmp
へのリンクにすべきである。
このリンクは互換性のためだけにあり、もはや使うべきでない。
- /var
- このディレクトリには、スプールファイルやログファイルのような、
サイズが変化するファイルが置かれる。
- /var/adm
- このディレクトリは
/var/log
に置き換えられた。
ここは /var/log
へのシンボリックリンクにすべきである。
- /var/backups
- 歴史的な理由からまだ残っている。
- /var/cache
- プログラムのためにキャッシュされたデータの置き場所。
-
/var/catman/cat[1-9] or
/var/cache/man/cat[1-9]
- これらのディレクトリには、整形済みのマニュアルページが、
ページのセクションに従って置かれている。
(整形済みマニュアルページの利用は推奨されていない。)
- /var/cron
- 歴史的な理由からまだ残っている。
- /var/lib
- プログラムの状態に関する情報のうち、可変なものの置き場所。
- /var/local
-
/usr/local
用の可変データの置き場所。
- /var/lock
- ロックファイルの置き場所。
デバイスのロックファイルの命名は、慣習として
LCK..<device>
とされている。ここで
<device>
はファイルシステム上でのデバイス名である。
利用されているフォーマットは
HDU UUCP
のロックファイルのものである。
すなわち各ロックファイルには
アスキー 10
進数値文字で表記した
PID 10 バイトと、
それに続いて改行文字とが含まれている。
- /var/log
- 種々のログファイルの置き場所。
- /var/opt
-
/opt
用の可変データの置き場所。
- /var/mail
- ユーザーのメールボックスの置き場所。
/var/spool/mail
を置き換えた。
- /var/msgs
- 歴史的な理由からまだ残っている。
- /var/preserve
- 歴史的な理由からまだ残っている。
- /var/run
- 実行時の可変ファイルが置かれる。
例えばプロセス識別子
(PID)
を保持するファイルや、
ユーザーのログイン情報ファイル
(utmp) などである。
ここのファイルは、通常システム起動時に削除される。
- /var/spool
- 色々なプログラムのスプールファイル
(あるいはキューファイル)
の置き場所。
- /var/spool/at
-
at(1)
のジョブスプール。
- /var/spool/cron
-
cron(8)
のジョブスプール。
- /var/spool/lpd
- 印刷用のスプールファイルが置かれる。
- /var/spool/mail
-
/var/mail
に置き換えられた。
- /var/spool/mqueue
- キューイングされた送信メールの置き場所。
- /var/spool/news
- ニュースのスプールディレクトリ。
- /var/spool/rwho
-
rwhod(8)
のスプールファイルの置き場所。
- /var/spool/smail
- メール配送プログラム
smail(1)
のスプールファイルの置き場所。
- /var/spool/uucp
-
uucp(1)
のスプールファイルの置き場所。
- /var/tmp
-
/tmp
と似ているが、
このディレクトリに置かれる一時的なファイルは保存期間の制限がない。
- /var/yp
- NIS
のデータベースファイルの置き場所。
The Filesystem Hierarchy Standard, Version 2.2
http://www.pathname.com/fhs/
このリストは網羅的なものではない。
個々のシステムでは異なる部分があるかもしれない。
find(1),
ln(1),
proc(5),
mount(8)
The Filesystem Hierarchy Standard
この man ページは Linux
man-pages
プロジェクトのリリース
3.79 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man-pages/
に書かれている。