
/proc(プロックファイルシステム)は、Linuxカーネルが提供する仮想ファイルシステムで、実行中のプロセス情報やカーネル設定をテキスト形式で公開するインターフェイスです。ディスク上の実体は持たず、ファイルを読み書きすることでカーネル内部の状態にアクセスできるという独特の設計を採用しています。/proc/
この記事の目次
- /procが提供する3つの代表的な情報群
- /procを実務で活用する基本フロー
- /procを扱う際の重要な注意点
- /procと/sysの役割分担を比較
- まとめ
/procが提供する3つの代表的な情報群

/procの最大の特徴は、各プロセスについて極めて詳細な情報を提供することです。/proc/
システム全体に関わるファイル群も豊富です。/proc/cpuinfoはCPUモデルやコア数、フラグを、/proc/meminfoはメモリ使用状況の詳細を、/proc/loadavgはロードアベレージを、/proc/uptimeは起動時間を提供します。さらに/proc/sys以下はカーネル動的パラメータの制御点で、sysctlコマンドが値の読み書きに使うインターフェイスです。/proc/sys/net/ipv4/ip_forwardを1にすればルーティングが有効になり、/proc/sys/vm/swappinessでスワップ動作の積極性を調整できます。
/procを実務で活用する基本フロー

/procを実務で活用する第一歩は、調査対象のプロセスIDを特定することです。pgrepやsystemctl status、ps auxなどでPIDを把握したら、cd /proc/
システム全体の挙動を捉えるには、/proc/meminfo、/proc/loadavg、/proc/stat、/proc/diskstats を時系列で取得して比較するアプローチが有効です。/proc/net/tcpや/proc/net/udp ではソケット状態を一覧でき、ssコマンドの内部データソースになっています。カーネルパラメータのチューニングには sysctl コマンドを使い、永続化には /etc/sysctl.conf や /etc/sysctl.d/ 以下の設定ファイルを利用します。procfsの値を直接書き換える操作は強力ですが、変更内容によっては本番影響が大きいため、必ず変更前の値を控えて段階的に試すのが安全です。
/procを扱う際の重要な注意点

/procを扱う上でまず理解すべきは、これがディスク上のファイルではなくカーネルが応答を生成する仮想ファイルシステムだという事実です。読み込み時点でカーネルが値を組み立てて返すため、ファイルサイズが0と表示されたり、複数回catすると値が変動したりするのは正常な動作です。スクリプトでログ収集する場合は、取得時刻と合わせて値を記録しておくことで後の解析に役立ちます。
/proc/sys 配下への書き込みは、変更が即座にカーネルへ反映される強力な操作です。一方で再起動すると失われるため、永続化には /etc/sysctl.d/ の設定ファイルを用意してsysctl --systemで反映するか、systemdのsysctlユニットを利用します。コンテナ内部で見える /proc は、Mount Namespace と PID Namespace の影響により制限されたビューになっている場合があります。コンテナ内 /proc/meminfo がホスト全体を示すなど、誤解を招く挙動もあるため、cgroups由来の値を見るならばcgroup配下を参照するのが正確です。
/procと/sysの役割分担を比較

歴史的に/procはLinuxにおけるカーネルインターフェイスの「何でも置き場」として発展してきました。プロセス情報という当初の目的に加え、CPU・メモリ・ネットワーク・カーネル設定など、多種多様な情報を雑多に集約しています。一覧性は高いものの、設計が一貫していない部分もあり、複数の情報が同一ファイルに詰め込まれてパースしにくいケースもあります。
そのような反省を踏まえて登場したのが/sysです。Linux 2.6カーネル以降に導入されたsysfsはデバイスとカーネルサブシステムの情報を、1ファイル1属性の原則で整然と公開します。プロセス情報は引き続き/procの守備範囲、デバイス情報は/sysの守備範囲という分担が確立しつつあります。とはいえ既存ツールが/procに強く依存している現実があり、両者は今後も併存していくでしょう。エンジニアとしては、それぞれの設計思想の違いと、自分が必要とする情報がどちらに置かれているかを把握しておくことが重要です。
まとめ
/procファイルシステムは、Linuxにおいてプロセスやカーネルの状態を覗くための最も基本的な窓口であり、psやtop、sysctlといった主要コマンドの土台でもあります。仮想ファイルシステムという独特の設計を理解すれば、シェルコマンドだけで深い調査やチューニングが可能になります。コンテナ環境特有の見え方の違いに気をつけつつ、/sysと役割分担を整理して使い分けることで、Linuxの内部挙動を高い解像度で把握できるようになります。
※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

コメント