つぶやきテック

日々のつぶやきアウトプット

つぶやきFHS【Linux】

FHSって?

  • Filesystem Hierarchy Standardの略です。
  • Linuxにおける、ディレクトリの基本ルールを規定しています。

FHS の構造

ポイントとなる性質

  1. 静的(コマンド実行などで書き換らない)かどうか
  2. 複数マシンで共有できるか

代表的な / 直下のディレクトリ

実行するコマンド・共有ライブラリの保管

ディレクトリ名 利用目的 静的 共有可
/bin 必須なコマンドのバイナリ(一般ユーザ用)
/sbin 必須なコマンドのバイナリ(特権ユーザ用)
/lib 必須の共有ライブラリ(及びカーネルモジュール)

システム・ログ・アプリケーション

ディレクトリ名 利用目的 静的 共有可
/opt 追加のパッケージ
/var 可変なデータ*1 × *2
/run システム起動後の、システムに関する情報*3

第二の階層 /usr

  • /usr 以下は静的・共有可です。
  • 主なディレクトリは以下の通りです。*4
ディレクトリ名 利用目的
/usr/bin 大部分のユーザコマンド
/usr/include C言語で使うヘッダファイル
/usr/lib ライブラリファイル
/usr/local パッケージシステム管理外
/usr/sbin 管理者用コマンド
/usr/share アーキテクチャに依存しないデータ

/bin と /usr/bin はどう違う?

FHSの定義においては、/ 直下のディレクトリ側には、システムを起動・復元・復旧・修復するのに必要なコマンド群を置くべきだとされています。*5

*1:ログ(/var/log)やロックファイル(/var/lock)、キャッシュ(/var/cache)など。歴史的には、/usrの可変な部分を/varに切り出したことで、/usrは読み込み専用にできるようになったのだとか。

*2:共有できるサブディレクトリとそうでないもの両方があります。

*3:デーモンプロセスIDを記述したファイルや、マシン内のサービス用のUNIXドメインソケットなど。/runディレクトリ内のデータは起動時に削除される必要があります。

*4:https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch04.html

*5:『SoftwareDesign 2021.4』「ディレクトリ構造とファイルシステム」