EN JA
PROCFS(5)
PROCFS(5) FreeBSD File Formats Manual PROCFS(5)

名称

procfsプロセスファイルシステム

書式

proc  /proc procfs rw 0 0

解説

プロセスファイルシステム、すなわち procfs は、ファイルシステムの内側のシステムプロセステーブルを見ることを実装しています。それは、通常、 /proc にマウントされ、 ps(1)w(1) のようなプログラムの完全な操作のために必要とされます。

procfs は、以前の FreeBSD 1.1 procfs 実装と異なり、プロセス空間の 2 つのレベルの見え方を提供しています。最高のレベルでは、プロセスそれ自体は、先導する 0 なしで 10 進数のそれらのプロセス ID によって指定されます。また、検索要求を行うプロセスを常に参照する、 curproc と呼ばれる特別のノードがあります。

各ノードは、次のエントリを含んでいるディレクトリです:

各ディレクトリは、次のいくつかのファイルを含んでいます:

ctl
様々な制御操作をサポートする書き込み専用のファイル。制御コマンドは、文字列として ctl ファイルに書き込まれます。制御コマンドは、次の通りです:
attach
対象プロセスを停止し、送信プロセスに対してデバッグ制御プロセスとなるよう手配する。
detach
対象プロセスの実行を継続し、デバッグプロセスの制御下から離します (送信プロセスである必要はありません)。
run
シグナルが届くか、ブレークポイントに達するか、または対象プロセスが終了するまで対象プロセスを継続して動作させます。
step
シグナルを届けずに対象プロセスをシングルステップさせます。
wait
対象プロセスがデバッグに適した平衡状態になるまで待ちます。対象プロセスは他のどのコマンドが許可されるよりも前にこの状態になる必要があります。

文字列は、 SIG 接頭辞なしの小文字のシグナル名でも構いません。この場合、指定したシグナルがプロセスに届けられます。 ( sigaction(2) 参照)。

procctl(8) ユーティリティは、スタックプロセスのトレースポイントをクリアするために使用することができます。

dbregs
< machine/reg.h> 中の struct dbregs で定義されるデバッグレジスタ。現在 dbregs は、i386 アーキテクチャでのみ実装されています。
etype
file 項目によって参照される実行形式のタイプ。
file
プロセステキストが読まれる file へのシンボリックリンク。これはプロセスのシンボルテーブルへのアクセスを得る、またはプロセスのもう 1 つのコピーを始めるために使われます。ファイルが見つからなかった場合、そのリンクターゲットは‘ unknown’です。
fpregs
< machine/reg.h> 中の struct fpregs で定義される浮動小数点レジスタ。 fpregs は、汎用レジスタセットと浮動小数点レジスタセットが明確に区別されたマシンにのみ実装されています。
map
プロセスの仮想メモリのマップ。
mem
プロセスの完全な仮想メモリイメージ。プロセス中に存在するアドレスのみがアクセスできます。このファイルに対する読み書きはプロセスを修正します。テキストセグメントに対する書き込みはそのプロセスのみに留まります。
note
プロセスへシグナルを送るために使われます。実装されていません。
notepg
プロセスグループへシグナルを送るために使われます。実装されていません。
osrel
プロセスに割り当てられたカーネルの osrel 値の読み込みと書き込みを許可します。値に依存してオンとオフに切り替えられる互換性の shim に影響します。初期プロセス値は、実行形式の ELF イメージの ABI ノートタグから読み込まれ、バイナリフォーマットによってサポートされないか、または、見つからなかったなら 0 です。
regs
プロセスのレジスタセットへの読み書き手段を提供します。このファイルは < machine/reg.h> 中で定義されている struct regs バイナリデータ構造体を含んでいます。 regs はプロセスが停止しているときのみ書き込みできます。
rlimit
これは、プロセスの現在および最大の制限を含む、読み込み専用ファイルです。各行の書式は rlimit current max であり、-1 は無限を意味します。
status
プロセスの状態。このファイルは読み込みのみで、空白で分けられた以下の多数のフィールドを含んだ 1 行を返します:

  • コマンド名
  • プロセス ID
  • 親プロセス ID
  • プロセスグループ ID
  • セッション ID
  • 制御端末のデバイス名、または制御端末がないなら、マイナス記号 (“-”)。
  • プロセスフラグのリスト: ctty 制御端末がある、 sldr プロセスがセッションリーダである、 noflags 他の 2 つのフラグがセットされていない。
  • コンマで区切った秒とマイクロ秒によるプロセス開始時刻
  • コンマで区切った秒とマイクロ秒によるユーザ時間
  • コンマで区切った秒とマイクロ秒によるシステム時間
  • ウェートチャネルメッセージ
  • 実効ユーザ ID と全てコンマで区切られたグループリスト(最初の項目は実効グループ ID) から成っているプロセスクリデンシャル
  • プロセスが走行する jail のホスト名。‘ -’の場合、プロセスは jail 中で走行していないことを示します。

対象がデバッガによって fork/exec される通常のデバッギング環境では、デバッガが fork し、子は自分自身で止まる(例えば自分で与えた SIGSTOP) べきです。親は適切な ctl ファイルを通じて wait そして attach コマンドを発行するべきです。子プロセスは exec 呼び出しが終わった直後に SIGTRAP を受け取ります ( execve(2) 参照)。

それぞれのノードはプロセスのユーザに所持され、ユーザのプライマリグループに属します。 mem ノードは例外的に kmem グループに属します。

関連ファイル

/proc
procfs のための通常のマウントポイント。
/proc/pid
プロセス pid のためのプロセス情報を含んでいるディレクトリ。
/proc/curproc
現在のプロセスのためにプロセス情報を含んでいるディレクトリ。
/proc/curproc/cmdline
プロセスの実行形式の名前。
/proc/curproc/ctl
プロセスに制御メッセージを送るために使用される。
/proc/curproc/etype
実行形式のタイプ。
/proc/curproc/file
実行形式のイメージ。
/proc/curproc/fpregs
プロセスの浮動小数点レジスタのセット。
/proc/curproc/map
プロセスの仮想メモリマップ。
/proc/curproc/mem
プロセスの完全な仮想アドレス空間。
/proc/curproc/note
プロセスにシグナルを送るために使用される。
/proc/curproc/notepg
プロセスグループにシグナルを送るために使用される。
/proc/curproc/osrel
プロセスの osrel 値。
/proc/curproc/regs
プロセスのレジスタのセット。
/proc/curproc/rlimit
プロセスの現在と最大の rlimit。
/proc/curproc/status
プロセスの現在の状態。

使用例

/procprocfs ファイルシステムをマウントするためには、次の通りです:

mount -t procfs proc /proc

作者

このマニュアルページは、 Jan-Simon Pendry によって提供された記述に基づいて Garrett Wollman によって書かれ、後で Mike Pritchard によって改良されました。
April 22, 2013 FreeBSD