helloworlds

not a noun, it's a verb

【Linux】Linuxの各ディレクトリについて軽くまとめてみた

今回はLinuxのおけるディレクトリについてまとめてみました。

CUIで操作していると、「あれ?このディレクトリってなんのためにあるんけ?」 ってよくその度にググるので、基本情報をまとめました。

Linux

LinuxとはOSの1つであり、Unix系オペレーションシステムカーネルである、 Linuxカーネル、およびカーネルとして周辺を整備したシステムのことである。 厳密にはカーネルのみを指すが、ソフトウェアを組み合わせて1つのソフトウェアパッケージとして提供される。 これを、ディストリビューションと言う。

Linux ディストリビューション

主に、RedHat系とDebian系に大きく2種類に分けられる。

種類については、以下を参照。

Linuxディストリビューション - Wikipedia

よく目にするRHELとは、RedHat系とDebian系に大きく2種類に分けられるEnterpriseLinuxのことで、RedHatの要の製品である。

基礎

Linuxでは、一般的に複数のユーザーが同時に接続できるように構築されているマルチユーザーのOSである。 主に管理者/一般/システムユーザーの3種類である。

管理者はroot(またはスーパーユーザー)で、一般ユーザーはシステムを利用するアカウント、システムユーザーはログイン利用はせず、特定のプログラムを実行するためなどのアカウントになる。

ディレクト

Unix系のOSでは、Filesystem Hierarchy Standard(FHS)といって、ファイルの階層標準が定められている。 だからといって、すべてのLinuxが同じ階層というわけではない。が、ディレクトリの構造が似ている。

/

ルートディレクトリ。 すべてのファイルとディレクトリは / の下に格納される。

/bin

binaries 一般ユーザー向けの基本コマンド群。 (ls, echo, mkdirなどの)どのユーザーでも実行できるコマンド。

Filesystem Hierarchy Standard - 3.4 /bin : Essential user command binaries (for use by all users)

また、基本的にこのディレクトリに新しいコマンドを追加することは推奨されていない。

/usr

User Services and Routines 全ユーザーが使用するアプリのソフトウェアやライブラリ群。

/usr/bin

一般ユーザー向けのの基本でないコマンド群。 言い換えると、/binほど当たり前でないけど日ごろよく使うコマンドを配置する。 AmazonLinux1では、diff, aws, ssh, yumなどが配置されていた。

/usr/lib

/usr/binや/usr/sbinにある基本コマンドの実行に必要なライブラリ群。

/usr/local

ローカルシステムで必要とされるコマンドやライブラリ、ドキュメントなど配置されている。

/usr/local/bin

パッケージ管理ツール以外でインストールした単一ファイルのアプリの格納先に適している。

/usr/local/src

手動でビルドするコードの格納先に適している。

/usr/src

ソースコード群(カーネルソースコードとそのヘッダーファイル群など。)

/usr/share

OSなどに依存しない共有ファイル群。 各アプリで使用されるデータベースや、manコマンドで使用されるマニュアルが格納されている。

/sbin

system bainaries rootユーザー向けのシステム管理コマンド群。 主に、起動/停止/リカバリーなどのシステム管理に必要なコマンドが配置されている。 一般ユーザーでは実行できないように権限が設定されているコマンドもある。

/etc

エトセ(et cetera) 設定ファイル群。システムやアプリに関わる設定ファイルなど。

/lib

システムの起動時に必要なものと、/bin, /sbinにある基本コマンド実行に必要なライブラリ

/lib64

64bitの場合、使用されるライブラリが格納されているディレクトリ。

/opt

option パッケージ管理ツール以外でインストールしたディレクトリ構造になっているアプリ(コード)の格納先。

/etc/opt

optの設定ファイル

/sys

system ドライバ関連のプロセス情報群。

/boot

boot loader システムの起動に必要なファイル群。 普段このディレクトリにあるファイルを変更することは滅多にない。

/dev

device 基本デバイスファイル群。(デバイスもファイルとして扱う) デバイスファイルを、Open,Read,Write,Closeという順にアクセスするようになっている。

/var

variable 一時ファイルを保存しておくディレクトリ。(可変ファイル群) ただし、このディレクトリに格納されているファイルは、サーバーの再起動で削除されない。 ログなど

/mnt

mount リムーバブルメディアを使用するときに利用されるマウントポイント用ディレクトリ。

/media

リムーバブル媒体(DVD-ROMなど)のマウントポイント。

/tmp

temporary files 一時ファイル群。サーバーの再起動で削除される。

/home

各ユーザーのホームディレクトリがあるディレクトリ。

Linuxによって、若干の違いや見たことないディレクトリはもちろん存在します。 また、ヴァージョンアップされたときなど、変更点をチェックするようにしないといけません。 構成管理ツールなどを使用して、自動化をしている場合、ディレクトリの変更や、 システムの起動方法に変更がかかっているとなると、大幅に改修が必要かもしれません。

AmazonLinuxもAL2を使用することができますが、いくつか変更点がやっぱりあります。

Amazon Linux と Amazon Linux 2 の技術面の違い - Qiita

ですが、基礎のディレクトリを把握しておくことで、臨機応変に考えることができそうです。

以上.