今回はLinuxのおけるディレクトリについてまとめてみました。
CUIで操作していると、「あれ?このディレクトリってなんのためにあるんけ?」 ってよくその度にググるので、基本情報をまとめました。
Linux
LinuxとはOSの1つであり、Unix系オペレーションシステムカーネルである、 Linuxカーネル、およびカーネルとして周辺を整備したシステムのことである。 厳密にはカーネルのみを指すが、ソフトウェアを組み合わせて1つのソフトウェアパッケージとして提供される。 これを、ディストリビューションと言う。
Linux ディストリビューション
主に、RedHat系とDebian系に大きく2種類に分けられる。
種類については、以下を参照。
よく目にする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
ですが、基礎のディレクトリを把握しておくことで、臨機応変に考えることができそうです。
以上.