💻

Linuxのファイルシステムについて

2024/04/08に公開

はじめに

brewのパスを通したり、dockerでlinuxを立てたりした時にファイルのパスについてあまり詳しく知らなかったのでまとめます。

ファイルシステムとは

ファイルシステムとはそもそも、「ファイルを開く、ファイルに書き込む、ファイルの情報を取得する」などといった操作をするための標準的かつ統一されたインターフェースを提供してくれるもののこと。
LinuxはUnixの「すべてはファイルである」という考え方が生きており、「ファイルはただのバイトの流れであり、内部データ構造について関与しない」という特徴があるため、ファイルシステムを用いて様々な種類のファイルを扱えるツールが作成できる。

FHS(Filesystem Hierarchy Standard)

/binには一般ユーザ、管理者が使用するコマンドを配置。/etcには設定ファイルを配置。など、基本的な「どこに何をおくか」を決めた階層情報のこと。バラバラだと色々とトラブルが起きるため、少しでも減らそうと作られました。

PATH Description
/bin, /sbin 一般ユーザーや管理者が使用するコマンド。システムプログラムとコマンド。
/dev デバイスファイル(ターミナル、ディスクドライブなど)。
/etc システム管理用の設定ファイルや各種ソフトウェアの設定ファイル。
/lib /bin, /sbinなどのコマンドやプログラムが利用する共有システムライブラリ。
/lib64 libの64ビット用。
/media, /mnt リムーバブルメディア(USBなど)のマウントポイント。
/opt 追加でインストールしたパッケージ。
/proc, /sys カーネルインターフェース。カーネルやプロセスが保持する情報を配置。
/root rootユーザーのホームディレクトリ。
/tmp アプリケーションやユーザーが利用する一時ファイル。
/var システム運用中にサイズが変化するファイル。ログ、バックアップ、ネットワークキャッシュなど。
/var/log ログファイル。
/boot システム起動時に必要なブートローダー関連のファイルやカーネルイメージ。
/usr ユーザーが共有するデータ(プログラム)。ユーティリティ、ライブラリ、コマンドなど。
/usr/bin 一般ユーザ、管理者が使用するコマンドが配置。
/usr/lib 各種コマンドが利用するライブラリ。
/usr/local 追加でインストールしたパッケージ。これ以下には、sbin, bin, libなどが配置される。
/usr/sbin システム管理者のみが実行できるコマンド。
/home ユーザーのホームディレクトリ。

終わりに

基本的にはパッケージマネージャーが自動的に配置してくれるとは思いますが、何か不具合があった時や、自分でコマンド(バイナリ)をインストールした際に正しい場所に配置できるようになれれば良いと思います。

Discussion