- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!!linux の /proc の備忘録
FreeBSD の場合には
fstab に次の行を追加するか
proc /proc procfs rw,noauto 0 0
もしくは
mount /proc
を実行
!/proc/[pid]/stat
kernel 2.6 は (44) ??
プロセスの状態についての情報。 これは ps(1) で使われ、 カーネルのソースファイル fs/proc/array.c で定義されている。
各フィールドを順番に、 scanf(3) のフォーマット指定子付きで以下に示す。
(1) pid %d
プロセス ID。
(2) comm %s
括弧でくくられた実行形式のファイル名。 実行形式がスワップアウトされているかどうかによらず、
見ることができる。
(3) state %c
プロセスの状態を示す、以下のいずれか 1 文字。
R 実行中 (Running)
S Sleeping in an interruptible wait
D Waiting in uninterruptible disk sleep
Z ゾンビ (Zombie)
T (シグナルでの) 停止、または (Linux 2.6.33 より前では) トレースによる停止
t トレースによる停止 (Tracing stop) (Linux 2.6.33 以降)
W ページング中 (Linux 2.6.0 より前のみ)
X 死亡 (Dead) (Linux 2.6.0 以降)
x 死亡 (Dead) (Linux 2.6.33 から 3.13 までのみ)
K Wakekill (Linux 2.6.33 から 3.13 までのみ)
W Waking (Linux 2.6.33 から 3.13 までのみ)
P Parked (Linux 3.9 から 3.13 までのみ)
(4) ppid %d
このプロセスの親プロセスの PID。
(5) pgrp %d
プロセスのプロセスグループ ID。
(6) session %d
プロセスのセッション ID。
(7) tty_nr %d
プロセスの制御端末 (マイナーデバイス番号はビット 31〜20 と 7〜0 にまたがって格納され、 メ
ジャーデバイス番号はビット 15〜8 に格納される)。
(8) tpgid %d
プロセスの制御端末のフォアグランド・プロセスグループの ID。
(9) flags %u
プロセスのカーネルフラグワード。 ビットの意味は、 <linux/sched.h> で定義されている PF_* を参
照すること。 詳細はカーネルのバージョンに依存する。
このフィールドのフォーマットは Linux 2.6 より前では %lu であった。
(10) minflt %lu
プロセスが引き起こしたマイナーフォールト (minor fault、ディスクから メモリーページへのロード
を必要としないフォールト) の回数。
(11) cminflt %lu
(そのプロセスが終了を待っている) 子プロセスが引き起こしたマイナーフォールトの回数。
(12) majflt %lu
プロセスが引き起こしたメジャーフォールト (major fault、ディスクからメモリーページへのロード
を必要とするフォールト) の回数。
(13) cmajflt %lu
(そのプロセスが終了を待っている) 子プロセスが引き起こしたメジャーフォールトの回数。
(14) utime %lu
このプロセスがユーザーモードでスケジューリングされた時間の合計。 clock tick 単位で計測される
(sysconf(_SC_CLK_TCK) で割った値が表示される)。 この値にはゲスト時間 guest_time (仮想 CPU の
実行に消費された時間) も含まれる。これは、ゲスト時間のフィールドを認識しないアプリケーション
において、ゲスト時間分を計算に入れ損ねないようにするためである。
(15) stime %lu
プロセスのカーネルモードでの実行時間 (単位 jiffies)。 このプロセスがカーネルモードでスケ
ジューリングされた時間の合計。 clock tick 単位で計測される (sysconf(_SC_CLK_TCK) で割った値
が表示される)。
(16) cutime %ld
このプロセスの子プロセスで、終了待ち (waited-for) のプロセスが、 ユーザーモードでスケジュー
リングされた時間の合計。 clock tick 単位で計測される (sysconf(_SC_CLK_TCK) で割った値が表示
される)。 (times(2) も参照すること。) この値にはゲスト時間 cguest_time (仮想 CPU を実行する
のに消費した時間、下記参照) も含まれる。
(17) cstime %ld
このプロセスの子プロセスで、終了待ち (waited-for) のプロセスが、カーネルモードでスケジューリ
ングされた時間の合計。 clock tick 単位で計測される (sysconf(_SC_CLK_TCK) で割った値が表示さ
れる)。
(18) priority %ld
(Linux 2.6 の場合の説明) リアルタイムスケジューリングポリシー (下記の policy ;
sched_setscheduler(2) 参照) で動作しているプロセスでは、 この 値はスケジューリング優先度を反転した値 (スケジューリング優先度を マイナスにし た値) となる。値は -2 から -100 までの範囲の数値で、 それぞれリアルタイム優先 度の 1 から 99 に対応する。 リアルタイム以外のスケジューリングポリシーで動作し ているプロセスでは、 この値はカーネル内で管理されている nice 値そのもの(setpriority(2)) となる。 カーネルは nice 値を 0 (高) から 39 (低) の範囲 の値として保持しteおり、 それぞれユーザーに見える nice 値の -20 から 19 に対応 する。
Linux 2.6 より前では、このプロセスに割り当てられたスケジューリング 重みを変換した値が表示されていた。
(19) nice %ld
nice 値 (setpriority(2) 参照)。 19 (最低優先) から -20 (最高優先) の範囲の値である。
(20) num_threads %ld
このプロセスのスレッド数 (Linux 2.6 以降)。 カーネル 2.6 より前では、このフィールドは削除さ
れたフィールドの 場所埋めとして 0 にハードコードされていた。
(21) itrealvalue %ld
インターバルタイマーによって、次に SIGALRM がプロセスへ送られるまでの時間 (単位 jiffies)。
カーネル 2.6.17 以降では、このフィールドはメンテナンスされなくなり、 0 にハードコードされて
いる。
(22) starttime %llu
プロセスの起動時刻。システムが起動した時刻が起点である。 Linux 2.6 より前のカーネルでは、 こ
の値の単位は jiffies であった。 Linux 2.6 以降では、 値の単位はクロック tick である
(sysconf(_SC_CLK_TCK) で割った値となる)。
このフィールドのフォーマットは Linux 2.6 より前では %lu であった。
(23) vsize %lu
仮想メモリーのサイズ。単位はバイト。
(24) rss %ld
Resident Set Size。プロセスが持っている実メモリー上のページ数。 これはちょうどテキスト、デー
タ、スタック空間に使われているページ数である。 デマンドロードされていないページや スワップア
ウトされたページの数は含んでいない。
(25) rsslim %lu
このプロセスの rss の現在のソフトリミット (バイト単位)。 getrlimit(2) の RLIMIT_RSS の説明を
参照。
(26) startcode %lu
プログラムテキストが実行可能であるような領域の先頭アドレス。
(27) endcode %lu
プログラムテキストが実行可能であるような領域の末尾アドレス。
(28) startstack %lu
スタックの開始アドレス (すなわち、スタックの底)。
(29) kstkesp %lu
現在の ESP (スタックポインター) の値。 プロセスのカーネルスタックページにある。
(30) kstkeip %lu
現在の EIP (インストラクションポインター) の値。
(31) signal %lu
処理待ちのシグナルのビットマップ。 10 進数で表示される。このフィールドは廃止予定である。リア
ルタイムシグナルに関する情報は表示されないからである。代わりに /proc/[pid]/status を使うこと。
(32) blocked %lu
ブロックされた (blocked) シグナルのビットマップ。 10 進数で表示される。 このフィールドは廃止
予定である。 リアルタイムシグナルに関する情報は表示されないからである。 代わりに
/proc/[pid]/status を使うこと。
(33) sigignore %lu
無視された (ignored) シグナルのビットマップ。 10 進数で表示される。 このフィールドは廃止予定
である。 リアルタイムシグナルに関する情報は表示されないからである。 代わりに
/proc/[pid]/status を使うこと。
(34) sigcatch %lu
捕捉された (caught) シグナルのビットマップ。 10 進数で表示される。 このフィールドは廃止予定
である。 リアルタイムシグナルに関する情報は表示されないからである。 代わりに
/proc/[pid]/status を使うこと。
(35) wchan %lu
This is the "channel" in which the process is waiting. It is the address of a location in
the kernel where the process is sleeping. The corresponding symbolic name can be found in
/proc/[pid]/wchan.
(36) nswap %lu
スワップされたページ数 (メンテナンスされていない)。
(37) cnswap %lu
子プロセスの nswap の累計 (メンテナンスされていない)。
(38) exit_signal %d (Linux 2.1.22 以降)
プロセスが死んだときに親プロセスに送られるシグナル。
(39) processor %d (Linux 2.2.8 以降)
このプロセスを最後に実行した CPU の番号。
(40) rt_priority %u (Linux 2.5.19 以降)
リアルタイムスケジューリングの優先度。 リアルタイムポリシーの元でスケジューリングされるプロ
セスでは 1 から 99 の範囲の値となり、 リアルタイム以外のスケジューリングポリシーのプロセスで
は 0 となる (sched_setscheduler(2) 参照)。
(41) policy %u (Linux 2.5.19 以降)
スケジューリングポリシー (sched_setscheduler(2) 参照)。 値は、 linux/sched.h の SCHED_* 定
数を使ってデコードすればよい。
このフィールドのフォーマットは Linux 2.6.22 より前は %lu であった。
(42) delayacct_blkio_ticks %llu (Linux 2.6.18 以降)
(clock tick (100分の1秒) 単位での) ブロック I/O の総遅延量。
(43) guest_time %lu (Linux 2.6.24 以降)
プロセスのゲスト時間 (ゲスト OS の仮想 CPU を実行するのに消費された時間)。 clock tick 単位で
計測される (sysconf(_SC_CLK_TCK) で割った値が表示される)。
(44) cguest_time %ld (Linux 2.6.24 以降)
プロセスの子プロセスのゲスト時間。 clock tick 単位で計測される (sysconf(_SC_CLK_TCK) で割っ
た値が表示される)。
(45) start_data %lu (Linux 3.3 以降)
Address above which program initialized and uninitialized (BSS) data are placed.
(46) end_data %lu (Linux 3.3 以降)
Address below which program initialized and uninitialized (BSS) data are placed.
(47) start_brk %lu (Linux 3.3 以降)
Address above which program heap can be expanded with brk(2).
(48) arg_start %lu (Linux 3.5 以降)
プログラムのコマンドライン引き数 (argv) が置かれる開始アドレス。
(49) arg_end %lu (Linux 3.5 以降)
プログラムのコマンドライン引き数 (argv) が置かれる終了アドレス。
(51) env_end %lu (Linux 3.5 以降)
プログラムの環境 (environment) が置かれる終了アドレス。
(52) exit_code %d (Linux 3.5 以降)
waitpid(2) が報告する形式のスレッドの終了ステータス。
!/proc/[pid]/statm
(ページ単位で計測した) メモリー使用量についての情報を提供する。 各列は以下の通りである。
size プログラムサイズの総計
(/proc/[pid]/status の VmSize と同じ)
resident 実メモリー上に存在するページ
(/proc/[pid]/status の VmRSS と同じ)
share 共有ページ (ファイルと関連付けられているページ)
text テキスト (コード)
lib ライブラリ (Linux 2.6 では未使用)
data データ + スタック
dt ダーティページ (Linux 2.6 では未使用)