Linuxでは、psなどの基本的なコマンドはじめ様々なコマンドで必須となるため、標準でprocfsをマウントする。
ただし、Linuxのprocfsはプロセスとは直接関係のないカーネルの情報も提供されている。プロセスと無関係なものについては、順次sysfsへと移動されている。
プロセスに関する情報は、/proc/<PID> ディレクトリ以下で提供されており、様々な仮想ファイルが提供されている。代表的なものをいくつか紹介する。
- /proc/<PID>/cmdline ‐ プロセスを起動したときのコマンドライン文字列
- /proc/<PID>/cwd ‐ カレントディレクトリへのシンボリックリンク
- /proc/<PID>/environ ‐ 環境変数
各エントリーは\0で区切られ、最後にも\0があるかもしれない。
例えば次のようにすれば、読みやすい。
$ (cat /proc/self/environ; echo) | tr '\000' '\n'
他の同様の項目も同様である。
- /proc/<PID>/exe ‐ 実行ファイルへのシンボリックリンク
- /proc/<PID>/fd ‐ fdに対応するシンボリックリンク
/proc/<PID>/fd/N は、/dev/fd/N とだいたい同じである。
- /proc/<PID>/fdinfo ‐ fdに対応するファイル位置やフラグ情報が置かれるディレクトリ
- /proc/<PID>/maps ‐ メモリーマップとアクセスパーミッション
- /proc/<PID>/mountinfo ‐ マウントポイントについての情報
- /proc/<PID>/root ‐ ルートディレクトリへのシンボリックリンク(通常は/となる)
- /proc/<PID>/stack ‐ スタック情報
- /proc/<PID>/stat ‐ そのプロセスの状態についての情報(処理系向け)
- /proc/<PID>/statm ‐ ページ単位でのメモリー使用量
- /proc/<PID>/status ‐ そのプロセスの状態についての情報(人間向け)
- /proc/<PID>/task ‐ スレッド情報
この下にスレッドIDでサブディレクトリがあり、その中身は/proc/<PID>/taskとほぼ同じ構成である。
プロセスと直接無関係なものは、次の通りである。代表的なものをいくつか紹介する。
- /proc/cmdline ‐ 起動時にLinuxカーネルに渡された引数
- /proc/cpuinfo ‐ CPUの情報
- /proc/devices ‐ メジャーデバイス番号の一覧
- /proc/diskstats ‐ ディスクの統計情報
- /proc/dma ‐ ISA DMAの一覧
- /proc/filesystems ‐ カーネルが対応しているファイルシステムの一覧
- /proc/interrupts ‐ CPUごとの割り込み回数
- /proc/iomem ‐ I/Oメモリーマップ
- /proc/ioports ‐ I/Oポートマップ
- /proc/kallsyms ‐ カーネルの外部シンボル定義
- /proc/kcore ‐ 物理メモリーを表現するもので、ELFコアファイル形式となっている
- /proc/loadavg ‐ ロードアベレージなどの情報。最初の情報はuptime(1)とほぼ同様
- /proc/locks ‐ ファイルロックの情報
- /proc/meminfo ‐ メモリーの使用量に関する統計情報
- /proc/modules ‐ モジュールの情報。lsmod(8)とほぼ同様
- /proc/net ‐ ネットに関する情報を含むディレクトリ。中には様々なファイルがある
- /proc/partitions ‐ パーティションブロックのアロケーション情報
- /proc/self ‐ プロセス自分自身を指し、/proc/<自分のPID> へのシンボリックリンク
- /proc/slabinfo ‐ カーネルキャッシュの情報
- /proc/stat ‐ カーネル/システムの統計
- /proc/swaps ‐ 使用中のスワップ領域の情報
- /proc/sys ‐ sysctl(2)に関するシステムパラメーターが置かれるディレクトリ
- /proc/tty ‐ TTYに関する情報が置かれるディレクトリ
- /proc/uptime ‐ 起動してからの時間(uptime)とアイドル時間
- /proc/version ‐ カーネルのバージョンを表わす文字列。uname(1)と似ているが書式は異なる
- /proc/vmstat ‐ 仮想メモリーの情報
- /proc/zoneinfo ‐ メモリーゾーン情報