Linuxディレクトリ構成

/     ルートディレクトリ

├ /bin    基本コマンド

├ /boot   起動に必要なファイル

├ /dev    デバイスファイル

├ /etc    設定ファイル

├ /home(オプション)  ユーザーのホームディレクトリ

├ /lib    共有ライブラリ

├ /mnt    一時的なマウントポイント

├ /opt    追加アプリケーション

├ /proc(Linux固有)  プロセス情報など

├ /root(オプション)  root用ホームディレクトリ

├ /sbin   システム管理用コマンドなど

├ /tmp    一時ファイル

├ /usr    各種プログラムなど

└ /var    変更されるデータ

/bin 基本コマンド格納フォルダ

catやlsなどの、基本的なコマンドのバイナリファイルが配置されます。

このディレクトリにあるコマンドは、一般ユーザーでも実行可能です。

このパスはデフォルトで/etc/init.d/functions内部で定義されており、ここに追加されていないプログラムは直接パスを指定しなければいけない。

# Set up a default search path.

PATH="/sbin:/usr/sbin:/bin:/usr/bin"

export PATH

ちなみに、catlsなどのおおもとコードは以下のリポジトリに格納されています。

https://github.com/coreutils/coreutils/tree/master/src

例えば、headコマンドのメイン関数は以下の通りです。

https://github.com/coreutils/coreutils/blob/def6b33bf6d481289ae188f3ee403ed392cff29a/src/head.c#L919

これらのソースコードを直接インストールすることも一応可能です。

wget https://ftp.jaist.ac.jp/pub/GNU/coreutils/coreutils-8.32.tar.xz

tar xfJ coreutils-8.32.tar.xz

cd coreutils-8.32/

./configure --prefix=/opt/coreutils-8.32

make

sudo mkdir /opt/coreutils-8.32

sudo make install

そのほか参考 : https://note.com/yamblue/n/n62acf1d0bc47

/sbin

システム管理に必須のコマンドが配置されます。

このパスにあるコマンドはrootユーザーのみ実行可能です。

shutdown,mkfs,mkswapコマンドなどが配置されてます。

/boot ブートフォルダ

/bootフォルダーにはlinuxシステムの起動のために必要なプログラムが格納されています。

例えば、linuxの核であるlinux kernelのプログラムはこちらに格納されています。

/bootフォルダーは基本触らないこと。

devバイスフォルダ

ハードウェア機器を表すファイルが保存される場所。

マウス、キーボード、プリンター、記憶装置、ディスプレイなど、あらゆるデバイスが接続される。

また、必ずしも物理デバイスに対応したファイルだけが格納されるわけではない。

仮想のデバイスファイルに対応することがあり、これらを擬似デバイスと呼ぶ。

擬似デバイスファイルには以下のようなものがある。

  • /dev/stdin/dev/stdout/dev/stderr – プロセスの標準ストリームにアクセスします。

  • /dev/null – 書き込まれたすべての入力を受け入れて破棄します。コマンドの実行結果を、画面に表示せず、ファイルにも保存したくない時、この擬似デバイスファイルにパイプすることで内容を棄却できます。

  • /dev/randomカーネルの暗号的に安全な擬似乱数ジェネレーターによって生成されたバイトを生成します。その正確な動作は実装によって異なり、 /dev/urandomや/dev/arandomなどのバリアントも提供される場合があります。

  • /dev/full - 書き込みを行おうとした時に、常に「容量が上限」というエラーを出力します。このデバイスを使用する場合の一般的な用途は、ファイルの書き込みエラーをテストすることです。

  • echo "Hello, World!" > /dev/full

    • この操作は、ファイルシステムのエラーハンドリングやアプリケーションの信頼性をテストするのに役に立ちます。
  • /dev/fd/0 - 標準入力(/dev/stdin)と繋がっています。

  • /dev/fd/1 - 標準出力(/dev/stdout)と繋がっています。

opt 拡張アプリケーション

個人で作成するアプリケーションなどは、このフォルダーにまとめることで管理が簡単になります。

etcフォルダー

システムの設定情報が記述されたファイルが配置されています。

lib 共有ライブラリ

binsbinから呼び出されるライブラリが格納されます。

そのほかは共有ライブラリやカーネルモジュールなどもここにインストールされます。

proc

プロセスを管理するためのフォルダー。

このフォルダーはcpuのメモリにマウントされており、このファイルに変更を加えることでプロセスの動作を変えることもできます。

root スーパーユーザーrootのホームディレクト

スーパーユーザーrootのホームディレクトリです。

/homeがマウントできなくなった場合でも、システムのメンテナンスが可能であるように通常のユーザーとは異なり、/home配下には存在しません。

var 頻繁に書き換えられるファイルが配置

var 頻繁に書き換えられるファイルが配置されています。

ログファイルやメール、プリンタのスプール(処理情報の一時保管先)などが該当します。

/var配下はさらに細分化されており、次のようなディレクトリが存在します。

  • /var/cache : 一時的なキャッシュファイル。manコマンドで表示するために成形したデータなどが格納されたりする。

  • /var/lock : アプリケーションが排他制御に使うためのロックファイルが配置されます。

  • /var/log : ログファイルが書き込まれます。nginxのログや、メールシステムのログファイルなどが格納されます。

  • /var/run : システムの状態を示すファイルが配置されます。特に、PIDが格納されたフォルダーを見ると、PIDを調べることができます。

  • /var/spool : 印刷町のデータや、予約されたジョブなど処理待ちのデータが配置されます。

usr コマンドやユーティリティが配置

コマンドやユーティリティツールが配置されます。

usrはuser service and routinesの略称です。

  • /usr/bin : ユーザーが一般的に使うコマンドで、緊急時のシステム保守には必須でないコマンドはここに配置されます。

  • /usr/sbin : システム管理コマンドですが、こちらも緊急時の保守には必須でないコマンドが配置されます。

  • /usr/lib : プログラムに必要な共有ライブラリが配置されます。

  • /usr :

  • /usr :

from https://en.wikipedia.org/wiki/Device_file

page:https://minegishirei.hatenablog.com/entry/2024/05/05/210432