FHSの「/run」ディレクトリの概要

/run

はじめに

Linuxファイルシステムの構造は、FHS (Filesystem Hierarchy Standard) によって標準化されており、システムの各ディレクトリが特定の役割を担っています。その中で比較的新しいディレクトリが、/run です。このディレクトリは、システム起動時やユーザセッション中に必要な一時的なランタイムデータを格納するために導入されました。

/run ディレクトリとは?

/run ディレクトリは、システムのランタイム中に必要な一時ファイルやプロセス間通信(IPC)に使用されるソケット、PIDファイル、その他のロックファイルなどが保存される場所です。システムのブートプロセス中に非常に重要な役割を果たしており、システムがフルに起動する前にアクセス可能な一時的な記憶領域を提供します。

/run の特徴

  • 一時的なデータの保存場所/run はシステム起動時および動作中に生成される一時的なデータを保持します。
  • 揮発性のメモリ上に存在/run は揮発性のメモリ(tmpfs)上に配置されているため、システムが再起動すると自動的に内容が消去されます。
  • 早期のアクセスが可能/run はシステムの初期化中にすでに使用可能で、重要な情報の保存やプロセス間通信に使用されます。

/run の主な用途

1. PIDファイル

システムサービスやデーモンが実行中のプロセスID (PID) を保存するためのファイルです。

/run/nginx/nginx.pid

2. ソケットファイル

プロセス間通信に使用されるUNIXドメインソケットが配置され、ローカルプロセス間での効率的なデータのやり取りを実現します。

/run/dbus/system_bus_socket

3. ロックファイル

プロセスがリソースを使用していることを示すロックファイル。

/run/lock/

4. ユーザごとのランタイムディレクトリ

各ユーザに対してランタイムファイルを格納する専用ディレクトリが生成されます。

/run/user/1000/

/run と他の一時ディレクトリとの違い

/tmp との違い

/tmp はユーザやプロセスが一時的に必要なファイルを保存する場所ですが、/run は主にシステムの動作に必要なランタイム情報を格納します。

/var/run との違い

/run は従来の/var/runに代わるディレクトリであり、システムの早期ブートプロセス中にもアクセス可能です。

/dev/shm との違い

/dev/shm はプロセス間でメモリを共有するために使用され、/run はランタイムデータの管理に特化しています。

まとめ

/run ディレクトリは、Linuxシステムのランタイム中に必要な一時ファイルやプロセス間通信のための重要な情報を格納するために使用されます。従来の/var/runよりも早期にアクセス可能で、システムのブートプロセスにおける柔軟性とパフォーマンスを向上させるために設計されています。