変更要約: 初版(主題1.02・副主題1.02.1〜1.02.4に対応)
2.4ファイルの配置と検索
FHS(Filesystem Hierarchy Standard)が定める標準ディレクトリ構成と、ファイル・コマンドの検索手段を学びます。主要ディレクトリ(/etc・/var・/home・/usr 等)の役割、find と locate(updatedb・/etc/updatedb.conf)の違い、コマンドの所在を調べる which・whereis・type を押さえます。
「設定ファイルはどこ?」「ログはどこ?」— Linux では答えがディストリビューションを超えてほぼ共通です。それを定める標準がFHSで、配置の地図を頭に入れておくと、探す・置く・トラブルシュートのすべてが速くなります。
2.4.1FHS の主要ディレクトリ
- /etc=システム全体の設定ファイル//var=ログ・スプールなど増減するデータ(/var/log)//home=一般ユーザーのホーム//root=root のホーム。
- /bin・/sbin=基本コマンド(sbin は管理者向け)//usr=アプリケーションと共有データの本体(/usr/bin・/usr/share)//opt=追加ソフトの独立インストール先。
- /tmp=一時ファイル(再起動で消えてよい)//boot=カーネルとブートローダー関連//dev=デバイスファイル//proc・/sys=カーネルが見せる仮想ファイルシステム。
2.4.2検索コマンドの使い分け
- find=ディスクをその場で走査(最新・遅い)。locate=updatedb が作ったデータベースを検索(高速・DB 更新後の変更は映らない)。除外パス等は /etc/updatedb.conf で設定。
- コマンドの所在=which(PATH 上の実行ファイルの場所)・whereis(実行ファイル+マニュアル+ソース)・type(シェルビルトインか外部コマンドかも判定。
type cd→ shell builtin)。
「locate で見つからない新規ファイル→ updatedb を実行」「今この瞬間の状態を確実に探す→ find」「cd の正体を調べられるのは type(ビルトイン判定)」 が定番です。FHS では 「設定=/etc・ログ=/var/log・一時=/tmp・追加ソフト=/opt」 の対応を最優先で覚えます。
locate と find の関係は「電話帳と現地調査」に例えられます。locate は updatedb(通常 cron で1日1回実行)が事前に作った索引を引くため一瞬で答えますが、索引が古ければ「今日作ったファイル」は出ませんし、削除済みファイルが出ることもあります。手動で updatedb を実行すれば最新化できます(/etc/updatedb.conf で /tmp などの除外パスを制御)。確実性が要る運用作業ではfindで実際に歩くのが正解です。コマンド探しの3兄弟は守備範囲で使い分けます:which は「シェルが実行するのは PATH 上のどれか」だけを答え、whereis はマニュアルやソースの場所まで、type は エイリアス やシェルビルトイン(cd・echo 等)まで見抜きます。which cd が何も返さないのに type cd が builtin と答える対比は、試験でも実務でも役に立つ知識です。
| ディレクトリ | 役割 | 代表例 |
|---|---|---|
| /etc | システム設定 | /etc/passwd・/etc/fstab |
| /var | 増減するデータ | /var/log・/var/spool |
| /usr | アプリと共有データ | /usr/bin・/usr/share |
| /opt//tmp | 追加ソフト/一時ファイル | /opt/app・/tmp/xxx |
ひっかけ: 「locate は常にファイルシステムの現在の状態を返す」は誤りです。locate が見るのは updatedb 実行時点の索引で、リアルタイムではありません。また「which はシェルビルトインも判定できる」も誤り=which が探すのは PATH 上の実行ファイルだけで、ビルトインやエイリアスまで判定できるのは type です。
2.4.3この節のまとめ
- FHS=設定 /etc・ログ /var/log・ホーム /home・アプリ /usr・追加 /opt・一時 /tmp・仮想 /proc,/sys
- find=実走査(確実)/locate=索引(高速・updatedb で更新)。コマンド探しは which<whereis<type(type はビルトインまで)
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. 今朝作成したはずのファイルが locate で見つからない。最初に行うべき対処は?
Q2. システム全体の設定ファイルが置かれる、FHS 標準のディレクトリはどれ?
Q3. 「cd」がシェルビルトインか外部コマンドかを判定したい。適切なコマンドは?

