/proc
読み:プロック
外語:/proc: process
UNIX
や
POSIX
準拠OS(
Linux
等)で、プロセス関係の情報が置かれる
ディレクトリ
。
目次
概要
特徴
ファイル
カレントプロセス
一覧
Linux
概要
具体的には、
procfs
をマウントするためのディレクトリ(
マウントポイント
)である。
UNIX
System V
、
BSD
、
Linux
など
オペレーティングシステム
(OS)を問わずこのディレクトリは存在するが、その内容については各OSの
カーネル
の仕様に依存しており、相互の互換性などはない。
OSによっては、プロセスの情報だけでなく、カーネルの情報を読み出すこともできる。
Linuxでも、どのディストリビューションにも例外なくあるが、FHSには規定されていない。
特徴
ファイル
ここに置かれた情報は、実際にはファイルとしてその実体は存在しない。
procfsがマウントされていると、PIDのディレクトリがあるように見え、ここから各種プロセスの情報を読み出すことができる。情報は一見ディレクトリやファイルに見えるが、仮想化されたものであって、ディスク上にファイル等がある訳ではない。
UNIXだけでなくLinuxでも同様だが、加えてカーネル内部の情報にアクセスするための情報がある。これも一見ファイルに見えるが、同様にファイルではない。
カレントプロセス
FreeBSD
などでは、/proc/curprocが、自分のプロセスIDへのシンボリックリンクになっているように見える。
また、
Linux
でも/proc/selfが、自分のプロセスIDへのシンボリックリンクになっているように見える。
一覧
Linux
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 ‐ メモリーゾーン情報
再検索