Linux は、マウントしたファイルシステムを / を根とする1つのディレクトリツリーとして示します。Filesystem Hierarchy Standard(FHS)は多くのディレクトリへ慣例的な役割を与えますが、ディストリビューション、コンテナ、immutable システム、ローカル方針で異なる場合があります。パスを前提にする前に実際のホストを調べてください。
$ ls -ld /*
ファイルシステム · レッスン 1
Linux の主要ディレクトリが意図する役割と、現代の統合された構成が異なる場合を学びます。
Linux は、マウントしたファイルシステムを / を根とする1つのディレクトリツリーとして示します。Filesystem Hierarchy Standard(FHS)は多くのディレクトリへ慣例的な役割を与えますが、ディストリビューション、コンテナ、immutable システム、ローカル方針で異なる場合があります。パスを前提にする前に実際のホストを調べてください。
$ ls -ld /*
/:見えるファイルシステムツリーのルート。/etc:ホスト固有のシステム設定。実行可能な補助・起動スクリプトを含む場合があり、実行可能内容を一切含まないという説明は不正確。/boot:ブートローダーデータ、多くのシステムではカーネルと初期 RAM ファイルシステムイメージなど、起動関連ファイル。/bin と /sbin:従来、必須のユーザー用・システム管理用コマンド。/lib とアーキテクチャ固有の派生パス:従来、必須の共有ライブラリとローダー部品。現在の多くのディストリビューションは merged /usr 構成を使い、/bin、/sbin、/lib が対応する /usr 内ディレクトリへのシンボリックリンクです。物理ディレクトリかリンクかを決め付けず、コマンド検索とパッケージ記録を使ってください。
ホスト固有のシステム設定を慣例的に含むディレクトリはどれですか?
/usr:コマンド、ライブラリ、アーキテクチャ非依存データなど、共有可能でほぼ読み取り専用の OS・アプリケーション階層。/usr/local:ディストリビューションの通常の /usr 管理外で、ローカル管理者が導入するソフトウェアとデータ。/opt:自己完結したサブツリーとして追加アプリケーションパッケージを置ける場所。名前に反して /usr は個々の利用者の個人ファイル用ではありません。大部分をパッケージマネージャーが所有するため、ローカルでコンパイルしたファイルを /usr/bin へコピーすると管理パッケージと競合できます。
ディストリビューション管理の /usr 外で、ローカル導入ソフトウェア用に予約された接頭辞はどれですか?
/home:慣例上、root 以外のユーザーのホーム。ディレクトリサービスやローカル方針で別の場所にも置ける。/root:root アカウントの慣例的なホーム。/srv:このシステムが提供するサイト固有データ。ホームパスは単に /home とユーザー名を結合せず、アカウント情報から得ます。getent passwd USER またはシェルが解決したホームを使ってください。
root アカウントの慣例的なホームディレクトリはどれですか?
/var:ログ、キャッシュ、スプール、アプリケーション状態などの可変データ。ログは一般に /var/log だが、主に journal を使うシステムもある。/run:ソケット、サービス状態、PID ファイルなど、現在の起動に対する揮発性の実行時状態。通常は起動時に再作成。/tmp:一時ファイル。sticky bit 保護付きで全ユーザーが書き込めることが一般的。/var/tmp:/tmp より長く残すべき一時ファイル。/tmp の整理方針は環境ごとに異なり、再起動まで必ず残る、または再起動時に必ず消えるとは限りません。アプリケーションは予測可能な名前を避け、安全な一時ファイル作成方法を使います。
システムログファイルを慣例的に保存するパスはどれですか?
/dev:デバイスノードと関連する実行時リンク。/proc:procfs を通じたプロセスとカーネルのインターフェース。/sys:sysfs を通じたカーネルオブジェクト、デバイス、ドライバー、属性。/media:自動マウントされるリムーバブルメディアによく使う。/mnt:管理者の一時マウントに使う慣例的な場所。これらは慣例で、権限を付与するものではありません。空でないディレクトリへ別ファイルシステムをマウントすると、アンマウントまで元の内容が一時的に隠れます。
sysfs を通じてカーネルのデバイスモデルを通常公開するパスはどれですか?
Linux でファイルシステムを移動する でこれらのパスを調べ、Linux でファイルとコマンドを探す で推測した場所に頼らない方法を練習できます。
レッスン完了
実システムの違いを考慮しながら、主要な Linux パスを意図された役割へ関連付けられるようになりました。
/ を根とする統一ツリーから始める。
設定、管理ソフトウェア、ローカルソフトウェア、可変データを分ける。
ホームとサービスデータを実行時状態から区別する。
/dev、/proc、/sys を特別な実行時インターフェースとして理解する。
構成を決め付ける前に、リンク、マウント、アカウント情報、ディストリビューション方針を調べる。