Bashプログラミング
 Computer >> コンピューター >  >> プログラミング >> Bashプログラミング

Linuxファイルシステムを完全マスター:/bin、/sbin、/usr/binなど主要ディレクトリの役割を徹底解説

「なぜあるコマンドは /bin にあり、別のコマンドは /sbin や /usr/bin、/usr/sbin に配置されているのだろう?」と疑問に思ったことはありませんか。

たとえば less コマンドは /usr/bin ディレクトリ配下にあります。なぜ /bin や /sbin、/usr/sbin ではないのでしょうか。これらのディレクトリには一体どんな違いがあるのでしょうか。

本記事では、Linuxファイルシステムの構造を俯瞰しながら、各トップレベルディレクトリの役割と意味をわかりやすく解説します。Linuxのコマンドやシステム管理を学ぶうえで、この知識は確実に役立つはずです。

1. / — ルートディレクトリ(Root)

  • すべてのファイルとディレクトリは、このルートディレクトリから始まります。
  • 書き込み権限を持つのは root ユーザーのみです。
  • 注意:root ユーザーのホームディレクトリは /root であり、「/(ルート)」とは別物です。混同しやすいので気をつけましょう。

2. /bin — ユーザー用バイナリ(User Binaries)

  • バイナリ形式の実行ファイルが格納されています。
  • シングルユーザーモードで必要となる基本的なLinuxコマンドは、このディレクトリに配置されます。
  • システムの全ユーザーが使用するコマンドもここにあります。
  • 例:pslspinggrepcp

3. /sbin — システム管理用バイナリ(System Binaries)

  • /bin と同様に実行可能なバイナリファイルを含みます。
  • ただし、ここにあるコマンドは主にシステム管理者がシステムの保守・管理目的で使用するものです。
  • 例:iptablesrebootfdiskifconfigswapon

4. /etc — 設定ファイル(Configuration Files)

  • すべてのプログラムが必要とする設定ファイルが格納されています。
  • 個々のプログラムを起動・停止するためのスタートアップ/シャットダウン用シェルスクリプトもここに含まれます。
  • 例:/etc/resolv.conf、/etc/logrotate.conf

5. /dev — デバイスファイル(Device Files)

  • デバイスファイルが格納されています。
  • 端末デバイス、USB、その他システムに接続されたあらゆるデバイスが含まれます。
  • 例:/dev/tty1、/dev/usbmon0

6. /proc — プロセス情報(Process Information)

  • システムプロセスに関する情報を保持しています。
  • これは擬似ファイルシステム(pseudo filesystem)であり、実行中のプロセスに関する情報を提供します。例えば /proc/{pid} ディレクトリには、そのPIDに対応するプロセスの情報が格納されています。
  • システムリソースに関するテキスト情報を持つ仮想ファイルシステムでもあります。例:/proc/uptime

7. /var — 可変ファイル(Variable Files)

  • 「var」は variable(可変)の略です。
  • サイズが増加していくことが想定されるファイルの内容は、このディレクトリ配下に置かれます。
  • 具体例:システムログファイル(/var/log)、パッケージやデータベースファイル(/var/lib)、メール(/var/mail)、印刷キュー(/var/spool)、ロックファイル(/var/lock)、再起動後も必要な一時ファイル(/var/tmp)

8. /tmp — 一時ファイル(Temporary Files)

  • システムやユーザーが作成した一時ファイルを格納するディレクトリです。
  • このディレクトリ内のファイルは、システムの再起動時に削除されます。

9. /usr — ユーザープログラム(User Programs)

  • 第二階層のプログラム向けに、バイナリ、ライブラリ、ドキュメント、ソースコードが格納されています。
  • /usr/bin:ユーザープログラム用のバイナリファイルを格納。/bin で見つからないユーザーコマンドは、ここを探しましょう。例:atawkcclessscp
  • /usr/sbin:システム管理者向けのバイナリファイルを格納。/sbin にないシステムコマンドは、こちらを確認してください。例:atdcronsshduseradduserdel
  • /usr/lib:/usr/bin および /usr/sbin 用のライブラリを格納。
  • /usr/local:ソースからインストールしたユーザープログラムを格納。例えばApacheをソースからビルドしてインストールすると、/usr/local/apache2 配下に配置されます。

10. /home — ホームディレクトリ(Home Directories)

  • 全ユーザーが個人ファイルを保存するためのホームディレクトリです。
  • 例:/home/john、/home/nikita

11. /boot — ブートローダーファイル(Boot Loader Files)

  • ブートローダーに関連するファイルが格納されています。
  • カーネルの initrd、vmlinuz、GRUB の設定ファイルなどは /boot 配下にあります。
  • 例:initrd.img-2.6.32-24-generic、vmlinuz-2.6.32-24-generic

12. /lib — システムライブラリ(System Libraries)

  • /bin および /sbin 配下のバイナリをサポートするライブラリファイルが格納されています。
  • ライブラリのファイル名は「ld*」または「lib*.so.*」という形式です。
  • 例:ld-2.11.1.so、libncurses.so.5.7

13. /opt — 追加アプリケーション(Optional Add-on Applications)

  • 「opt」は optional(任意)の略です。
  • ベンダー各社が提供するアドオンアプリケーションを格納します。
  • アドオンアプリケーションは、/opt またはそのサブディレクトリ(/opt/{アプリ名})配下にインストールするのが慣例です。

14. /mnt — マウントディレクトリ(Mount Directory)

  • システム管理者がファイルシステムを一時的にマウントするためのディレクトリです。

15. /media — リムーバブルメディア(Removable Media Devices)

  • 取り外し可能なデバイスを一時的にマウントするためのディレクトリです。
  • 例:CD-ROMなら /media/cdrom、フロッピードライブなら /media/floppy、CDライターなら /media/cdrecorder

16. /srv — サービスデータ(Service Data)

  • 「srv」は service(サービス)の略です。
  • サーバー固有のサービスに関連するデータを格納します。
  • 例:/srv/cvs にはCVS関連のデータが置かれます。

まとめ

Linuxのディレクトリ構造はFHS(Filesystem Hierarchy Standard)に基づいて整理されており、それぞれのディレクトリに明確な役割があります。「/bin と /usr/bin の違い」「設定は /etc、ログは /var/log」といった基本を押さえておくと、トラブルシューティングやシステム管理の効率が大きく向上します。まずは自分の環境で ls コマンドを使って各ディレクトリの中身を実際に確認してみることをおすすめします。

  1. Debian・Ubuntu・Linux Mintでディスク容量を解放するGUIツール ベスト5

    時間が経つにつれて、ディスクの空き容量が徐々に減っていくことに気づいたことはありませんか?その原因は、ジャンクファイル(不要ファイル)が時間とともにハードドライブを急速に埋め尽くしていくためです。これは特に、ソフトウェアパッケージのインストール時に顕著に起こります。インストールの際、これらのファイルは再インストールが必要になった場合に備えて、通常 /var/cache/ ディレクトリにキャッシュされるからです。残念ながら、Ubuntu にはシステムが不要になったファイルを自動的に削除する仕組みがありません。そのため、パッケージをインストールするたびにファイルが蓄積され、ドライブ上の貴重な容量を

  2. NagiosでWindowsホストを監視する方法:ステップバイステップ完全ガイド

    本記事では、Windowsマシンの「プライベート」サービス、すなわちCPU負荷、ディスク使用量、メモリ使用量、各種サービスなどを監視する方法を解説します。これを実現するには、WindowsマシンにNSClient++アドオンをインストールする必要があります。このアドオンはWindowsマシンとNagios間のプロキシとして動作し、check_ntプラグインと通信することで実際のサービスを監視します。当サイトのNagiosインストールガイドに従っていれば、check_ntプラグインはすでにNagios監視サーバーにインストールされています。 この記事では、以下のガイドに従ってNagiosサーバー