システムの理解に不可欠なLinuxのディレクトリ構造を、各ディレクトリの役割や重要性と合わせてまとめる。Linuxシステムの全体像を把握する。
Linuxのファイル
Linuxはファイルシステムという仕組みを使用して、 データをファイルとディレクトリの階層構造とし形成し、データの組織化とアクセスの管理を行う。
また、ユーザーが取り扱う一般的なファイルと異なり、 ファイルシステムの機能に依存しない特殊ファイルが存在する。
ファイルの種類
一般的ファイル
テキストデータやバイナリデータコンピュータプログラム、画像、音声等があり、作成したデータを書き込むことで保存し、 後に読みだすことを目的に使う。
以下例示。
- System Filesシステムファイル
- オペレーティングシステムの動作に必要なファイルや設定ファイル。
- User Filesユーザーファイル
- ユーザーが作成したデータファイルやアプリケーションファイル。
- Program Filesプログラムファイル
- 実行可能ファイルやスクリプト。
- Configuration Files設定ファイル
- アプリケーションやシステムの設定を保持するファイル。
- Log Filesログファイル
- システムやアプリケーションのイベントやエラーメッセージを記録するファイル。
ディレクトリが他のディレクトリに包含され、 他のディレクトリやファイルを包含することで、 ファイルシステム内の階層構造を形成する。
以下例示。
- / ルートディレクトリ
- システム全体を含むトップレベルのディレクトリ。
- . Current Directory カレントディレクトリ
- ユーザーが現在作業しているディレクトリ。
- /home/userユーザーホームディレクトリ
- 各ユーザーの個別のディレクトリ。
- /usr, /etc, /var, /libシステムディレクトリ
- システム関連のファイルや設定が格納されるディレクトリ。
- /tmp 一時ディレクトリ
- 一時ファイルが格納されるディレクトリ。
特殊ファイル
ハードウェアデバイスにアクセス、操作するための特殊ファイル。
一般的に /dev 内に格納される。
以下の2つの種類に大分される。
- Block Device Fileブロックデバイスファイル
- データをブロック単位で読み書きするためのデバイスファイル。
- ハードディスク、CD/DVDドライブ、プリンター等
- Character Device Fileキャラクタデバイスファイル
- データをキャラクタ単位で読み書きするためのデバイスファイル。入出力デバイス。
- キーボード、マウス、シリアルポート等
システムやプロセス間の通信、デバイスへのアクセス、または特殊な処理のために使用される。
以下代表的なファイル。
- Symbolic Linksシンボリックリンク
- 他のファイルやディレクトリへのポインタの役割を果たす特殊ファイル。
ファイルシステム内の任意の場所を参照するために使用される。 - ショートカットやエイリアスのようなもので、ファイルシステム内で柔軟なリンクを作成し、 ファイルとディレクトリの整理、管理、アクセスを向上させるのに役立つ。
- Socket Fileソケット
- ネットワーク上で異なるコンピュータやプロセス間のIPCプロセス間通信を実現するための特殊ファイル。
TCPやUDPなどのプロトコルを介してデータを送受信する。 - LANカード、Wifiアダプタのようなネットワークインターフェース等
- Named Pipesパイプ
- 同一コンピュータ内ローカルでのIPCプロセス間通信を実現するための特殊ファイル。
データのストリームをプロセス間で転送するために使用され、 書き込んだデータをその順に読み込むことができるFIFOFirst-In-First-Out 。 - 通常、| パイプ演算子を使用してコマンドラインシェル内でパイプラインを構築する。
ファイルの特徴
権限と所有者
各ファイルは権限と所有者を持つ。
- read
- 読み取り権限。
- write
- 書き込み権限。
- execute
- 実行権限。
- Owner所有者
- ファイルやディレクトリを所有するユーザー。
所有者は、ファイルやディレクトリに対して特定のアクセス権を持つ。
通常、ファイルを作成したユーザーがその所有者となる。 - Groupグループ
- ファイルやディレクトリが所属するグループ。
複数のユーザーをグループにまとめることで、 同じグループに所属するユーザー間で共有のアクセス権を持つことができる。 - Othersその他のユーザー
- 所有者やグループに属さない他のすべてのユーザーが含まれる。
その他のユーザーに対する権限を制御することで、 システム管理者はファイルやディレクトリへのアクセスを適切に管理し、 セキュリティを確保することができます。
ファイル操作
ファイルに対して新規作成、削除、コピー等の操作を行うことができる。
- CUICommand Line Interface
- テキストベースのインターフェースを使用してユーザーとシステムの間の対話を行う方法。 スクリプトや自動化、リモート操作等の柔軟で強力な方法。
- Bash Shell, Zsh, etc
- GUIGraphical User Interface
- グラフィカルな要素を使用してユーザーとシステムの間の対話を行う方法。 直感的でビジュアルに解りやすい方法。
- GNOME, KDE, XFCE, Cinnamon, etc
- Create
- touch, mkdir
- 新しいファイル、新しいディレクトリを作成。
- Delete
- rm, rmdir
- 指定したファイル、空のディレクトリを永久に削除。
- Copy
- cp
- ファイルをコピー。
- Move and Rename
- mv
- ファイルを別のディレクトリに移動したり、名前を変更。
Linuxにおいて、ファイルは非常に重要で中心的な概念であり、システムの設定、 データ、プログラム、ドキュメントなど、ほぼすべてがファイルとして表現される。
LinuxのDirectory
Linuxは複数のディレクトリが存在し、それぞれの役割をもって構成されている。
Directoryの構造
DirectoryのPath
Pathパスとはファイルやディレクトリの配置された位置を示す文字列。
ファイルやディレクトリにアクセスする際にその場所を指定する方法。
Pathのタイプ
Linuxのパスは、通常、次の2つのタイプがある。
- Absolute Path絶対パス
- ファイルやディレクトリの位置をルートディレクトリ/から完全に指定する方法。
- example.txt ファイルを指定する場合、
/home/user-01/example.txtと記述する。 - Relative Path相対パス
- 現在のカレントディレクトリ.を基準にして、ファイルやディレクトリの位置を指定する方法。
- カレントディレクトリがuser-01の場合、
./example.txtと記述し example.txt ファイルを指定する。
Pathの階層構造から見たディレクトリ表現
階層構造から見た場合、ディレクトリは以下の通り分類できる。
- Root Directoryルートディレクトリ
- /と表される。
- Linuxファイルシステムの最上位に位置するディレクトリ。
絶対パスの基準。 - ディレクトリ名の間にある/は区切り文字デリミタでルートを意味する先頭のそれとは異なる。
- Current Directoryカレントディレクトリ
- .と表される。
- ユーザーが現在作業しているディレクトリ。
相対パスの基準。 - ./ は省略可能で、 ./SUB-DIRECTORYはSUB-DIRECTORYと省略して指定ができる。
- Parent Directory親ディレクトリ
- ../と表される。
- ある特定のディレクトリの直接的な上位に位置するディレクトリを指す。
- ./../../は親ディレクトリの親ディレクトリを指す。
- Sub Directoryサブディレクトリ
- ある特定のディレクトリの中に配置された別のディレクトリを指す。
階層的なディレクトリ構造内でディレクトリを組織化するために使用される。
Directory の一覧表
Directories | Description | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
バイナリファイル実行ファイルが格納される場所。 全ユーザー向けのLinuxを操作する基本的なコマンド。 サブディレクトリ
|
||||||||||||
|
システムのブートローダやカーネルイメージが格納される場所。 Linuxの起動に必要なファイル。 |
||||||||||||
|
ハードウェアデバイスディスクドライブ、USBデバイス、キーボード、マウス等へのアクセスを提供するデバイスファイルが格納される場所。 システムがハードウェアデバイスを認識した際、自動的にデバイスファイルを生成し、 ユーザーまたはシステムソフトウェアがこれらのデバイスにアクセスできるようになる。 サブディレクトリ
|
||||||||||||
|
システム全体の設定ファイルを保存する場所。 ユーザーアカウント、ネットワーク設定、システム構成、サービス設定等 ユーザーおよびシステム設定の変更に使用される重要なシステムファイルを含む。 サーバー等のミドルウェアをインストールした場合の設定ファイルも
このディレクトリに保存される。 サブディレクトリ
|
||||||||||||
|
ユーザーホームディレクトリ。 各ユーザーの個別のユーザーディレクトリが作成され、 ユーザーごとに異なるデータや設定が保存される。 ユーザーが自分のファイル、ドキュメント、設定ファイルを保存し、 個別のユーザーアカウントのルートディレクトリとして機能し、 ログインしたときに最初にアクセスするディレクトリとなる。/home/USER-01 |
||||||||||||
|
共有ライブラリが格納されている場所。 共有ライブラリは、プログラムが実行時に 必要とするコードやリソースを提供するファイルで、 複数のプログラムが同じライブラリを共有できるように設計されている。 /bin や /sbin ディレクトリにあるコマンドを実行するのに必要なライブラリも格納されている。 |
||||||||||||
|
リムーバブルメディアUSBドライブ、CD-RO等外部の取り外し可能メディアデバイスが自動的にマウントされるマウントポイント。 外部デバイスを接続したとき、デバイス名やラベルに基づいて サブディレクトリが生成され、 一時的にコンピュータにアクセスできるようにし、 ユーザーはそのデータにアクセスできるようになる。 |
||||||||||||
|
外部データやリモートファイルシステム等をユーザーのファイルシステムに結合するための場所。 ユーザーがリムーバブルメディアやネットワークリポジトリを利用する場合、
一時的なマウントポイントとして使用し、それらにアクセスできるようにしている。 NVMe 等で接続された SSD や HDD などのマウントに利用。 一般的なマウントの手順
以上により、マウントされたリソースの内容にアクセスできる。 |
||||||||||||
|
システム管理者やユーザーがパッケージ管理システムを使用し、独自にインストールした、
アプリケーションやソフトウェアパッケージが保存される場所。 システムから独立して管理されるので、 ソフトウェアのバージョン管理、アプリケーション間の競合を回避等 整理するために役立つ。
|
||||||||||||
|
実行中プロセスに関する詳細情報が仮想ファイルとして生成されるマウントポイント。 ディレクトリ内の各ファイルやディレクトリは、PIDプロセスIDを基にして命名されており、 プロセスごとに情報が仮想ファイルとして生成される。 実際にはディスク上に存在しない仮想ファイルのため、直接編集できない読取り専用の ファイルを提供し、システム管理、診断やデバッグの目的で使用する。 CPU情報を参照する場合
メモリ情報を参照する場合
|
||||||||||||
|
Linuxファイルシステムの最上位ディレクトリ。 すべてのファイルとディレクトリの親ディレクトリ。 |
||||||||||||
|
一時ファイルやプロセス情報などの一時的な
ランタイムデータを整理し、管理するための場所。 主な管理対象データ
|
||||||||||||
|
バイナリファイル実行ファイルが格納される場所。 一般的なユーザーが利用する/binのコマンドとは異なり、 /sbin 内のコマンドは主にシステムの起動、停止、修復、診断等の 管理コマンドを提供している。 ルートユーザースーパーユーザーのみが実行するコマンドを格納し、一般のユーザーにはアクセス権がない。 サブディレクトリ
|
||||||||||||
|
システムで提供されるサービスに関連するデータやコンテンツを保存する場所。 ウェブサーバー、FTPサーバー、リモートファイル共有等のサービスが提供する データやウェブサイトのコンテンツなどを格納するのに便利。 このディレクトリは、Linuxのファイルシステムの標準には含まれていないが、 多くのLinuxディストリビューションで採用されており、 サーバー環境で一貫性のあるデータ配置を提供するために役立つ。 |
||||||||||||
|
カーネルとハードウェアに関する情報を提供するための仮想ファイルシステム。 ユーザーやシステム管理者は、sysfsを通じて デバイス情報の確認、カーネルパラメータの設定ができき、 Linuxシステムの診断やデバッグ、デバイスの管理、エネルギー管理、 および他のシステムタスクに役立つ。 |
||||||||||||
|
一時ファイルが格納される場所。 一時ファイルは、プログラムやプロセスが一時的なデータを保存し、 必要がなくなったら削除するために利用される。 システムが再起動するたびにこのデータはクリアされる。 |
||||||||||||
|
複数のマシンに跨って共有可能なシステムリソースやアプリケーションが格納される場所。 ユーザー個別の設定ファイルは含まれない。 Title
サブディレクトリ
|
||||||||||||
|
システムが実行中に変更されるデータログ、一時ファイル等が保存される場所。 システムが動作し続けるために必要なデータ、プロセスID、 キャッシュ等が保存される。 サブディレクトリ
|