Linuxのディレクトリ構造
またAIに聞いてみた
Linuxのディレクトリ構造(FHS)の概要
Linuxのファイルシステムは,すべてのディレクトリがルート(/)と呼ばれる最上層の頂点からツリー状に広がる構造を持っています.FHS(Filesystem Hierarchy Standard)という標準規格によって,どのディレクトリに何を配置するかが厳格に定められています.
# 自分のrootディレクトリを出力してみた
.
├── bin -> usr/bin
├── bin.usr-is-merged
├── boot
├── cdrom
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib.usr-is-merged
├── lib64 -> usr/lib64
├── lost+found
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── sbin.usr-is-merged
├── snap
├── srv
├── swap.img
├── sys
├── tmp
├── usr
└── var
主要なディレクトリとその役割
/ (Root)
すべてのディレクトリとファイルの起点となる最上層のディレクトリです.Windowsの「Cドライブ」のような独立したドライブ文字はなく,あらゆるストレージがこの下に結合されます.
/bin (Binary)
システムの起動や修復,およびシングルユーザーモードでの運用に必要不可欠な最基本コマンドが格納されています.ls や cp などの汎用的な実行ファイルがここに配置されます.
/sbin (System Binary)
OSの起動やシステム管理,メンテナンスに利用する管理者(root)向けの重要コマンドが格納されています.ファイルシステムの修復ツールやネットワーク設定ツールなどが配置されます.
/etc (Etcetera)
OSや各アプリケーションの設定ファイルが集中して配置されているディレクトリです.基本的にはテキストファイルで構成されており,システムの挙動をカスタマイズする際に編集します.
/dev (Device)
ハードディスクやキーボード,USB機器などの物理デバイスをファイルとして抽象化したものが格納されています.Linuxではデバイスもすべてファイルとして扱われるため,ここに集約されます.
/proc (Process)
カーネルや実行中のプロセスに関する情報がリアルタイムに格納される,メモリ上の仮想的なディレクトリです.ディスク上の容量は消費しておらず,中身を見ることでCPU情報やメモリ使用量を確認できます.
/var (Variable)
システム運用中にサイズが常に変動する(可変な)データが格納されるディレクトリです.エラーログやアクセスログなどのシステムログ,メールのキューなどがここに配置されます.
/tmp (Temporary)
アプリケーションなどが一時的に作成するファイルを配置するためのディレクトリです.多くのシステムでは再起動時や一定期間が経過したあとに,内部のファイルが自動的に消去されます.
/usr (User)
システム起動には直接必要ないものの,通常の運用で利用するアプリケーションやライブラリが格納されています.この中にも bin や sbin が存在し,一般ユーザー向けのソフトウェアが配置されます.
/home (Home)
一般ユーザーごとに作成される,個人の作業用データを保存するためのディレクトリです.ユーザーごとに個別のディレクトリが割り当てられ,設定ファイル(dotfiles)などもここに保存されます.
/root (Root Home)
システム最高管理者である「rootユーザー」専用のホームディレクトリです.一般ユーザーの /home とはセキュリティ上の理由から完全に区別され,最上層に独立して配置されています.
/boot (Boot)
OSを起動(ブート)するために必要なカーネルの本体や,ブートローダー(GRUBなど)の関連ファイルが格納されています.システム起動時に最初に読み込まれる極めて重要な領域です.
/lib (Library)
/bin や /sbin にある最基本コマンド群が動作するために必要とする,共有ライブラリが格納されています.Windowsでいう「.dllファイル」に相当するプログラムのパーツが集まる場所です.
/opt (Optional)
公式パッケージ管理ツール(APTやPacmanなど)を介さず,手動で導入したサードパーティ製の大型アプリケーションを配置するディレクトリです.製品ごとにディレクトリが丸ごと独立して格納されます.
/mnt (Mount) / /media (Media)
外部ストレージを一時的にシステムに認識(マウント)させるためのディレクトリです.昔ながらの手動マウントには /mnt が使われ,USBメモリなどの自動認識には /media がよく使われます.