procfs
読み:プロック-エフエス
外語:procfs: process filesystem
UNIXやPOSIX準拠OS(Linux等)にある疑似ファイルシステムの一つ。
概要
procfsは、カーネルが管理するプロセス関係の情報をファイルシステムに見せかけて扱うことができるものである。
通常は/procにmountして使う。
特徴
由来
元々はVersion 8 UNIXで実装された。
これが、SVR4、Plan9、4.4BSD、Linuxなどに次々と移植、実装され、そのたびに改良が進められた。
System V
プロセスごとにサブディレクトリが用意し、各プロセスごとの情報が得られるようになっている。
例えばSystem VであるUnixWareの場合、次のようになる。
-rw------- 1 root root 585728 Feb 27 13:50 as
-r-------- 1 root root 32 Feb 27 13:50 cred
--w------- 1 root root 0 Feb 27 13:50 ctl
dr-xr-xr-x 1 root root 0 Feb 27 13:50 lwp
-r-------- 1 root root 2436 Feb 27 13:50 map
dr-x------ 1 root root 0 Feb 27 13:50 object
-r--r--r-- 1 root root 260 Feb 27 13:50 psinfo
-r-------- 1 root root 1088 Feb 27 13:50 sigact
-r-------- 1 root root 1152 Feb 27 13:50 status
それぞれ、次のような情報が得られる。
- /proc/<pid>/as ‐ プロセスのアドレス空間情報
- /proc/<pid>/cred ‐ プロセスの資格情報
- /proc/<pid>/ctl ‐ プロセス制御ファイル
- /proc/<pid>/lwp ‐ プロセス内のLWPを表わすファイルが含まれるディレクトリ
- /proc/<pid>/map ‐ アドレス空間マップ情報。pmap(1)コマンドで表示される
- /proc/<pid>/object ‐ 開いているファイルや共有メモリーオブジェクトの情報が格納されるディレクトリ
- /proc/<pid>/psinfo ‐ ps(1)コマンドで表示するためのプロセス情報
- /proc/<pid>/sigact ‐ シグナル状況の情報
- /proc/<pid>/status ‐ プロセスの一般的な情報
これがやがて、BSDやLinuxに実装されるようになると、さらに豊富な情報が得られるように拡張されることになる。
BSD
BSDでは、4.4BSDで実装された。
ただし、現在のFreeBSD、OpenBSDでは、procfsは標準ではマウントされていない。
procfsをマウントするためには、/etc/fstabを書き換える(一行追記する)必要がある。例えば、次のような行を追記する。
proc /proc procfs rw 0 0
この後、「mount -a」とするかOSを再起動すれば、/procにprocfsがマウントされているはずである。
Linux
Linuxでは、psなどの基本的なコマンドはじめ様々なコマンドで必須となるため、標準でprocfsをマウントする。
ただし、Linuxのprocfsはプロセスとは直接関係のないカーネルの情報も提供されている。プロセスと無関係なものについては、順次sysfsへと移動されている。
プロセスに関する情報は、/proc/<PID> ディレクトリ以下で提供されており、様々な仮想ファイルが提供されている。
再検索