5.3. /proc/内のディレクトリー
カーネルに関する一般的な情報は、
/proc/
ディレクトリー内のディレクトリーおよびサブディレクトリーにグループ化されます。
5.3.1. プロセスディレクトリー
すべての
/proc/
ディレクトリーには、数値名を持つディレクトリーが多数含まれます。これらのリストは、以下のようになります。
dr-xr-xr-x 3 root root 0 Feb 13 01:28 1 dr-xr-xr-x 3 root root 0 Feb 13 01:28 1010 dr-xr-xr-x 3 xfs xfs 0 Feb 13 01:28 1087 dr-xr-xr-x 3 daemon daemon 0 Feb 13 01:28 1123 dr-xr-xr-x 3 root root 0 Feb 13 01:28 11307 dr-xr-xr-x 3 apache apache 0 Feb 13 01:28 13660 dr-xr-xr-x 3 rpc rpc 0 Feb 13 01:28 637 dr-xr-xr-x 3 rpcuser rpcuser 0 Feb 13 01:28 666
これらのディレクトリーは、プログラム のプロセス ID の後に名前が付けられ、そのプロセスに固有の情報が含まれるため、プロセスディレクトリー と呼ばれます。各プロセスディレクトリーの所有者およびグループは、プロセスを実行しているユーザーに設定されます。プロセスが終了すると、
/proc/
プロセスディレクトリーが消失します。
各プロセスディレクトリーには以下のファイルが含まれます。
cmdline
- プロセスの起動時に発行されたコマンドが含まれます。CWD
: プロセスの現在の作業ディレクトリーへのシンボリックリンク。environ
: プロセスの環境変数の一覧。環境変数はすべての大文字で指定され、値は小文字です。exe
: このプロセスの実行ファイルへのシンボリックリンクです。fd
: 特定のプロセスのファイル記述子をすべて含むディレクトリー。番号付きのリンクには、以下のものがあります。total 0 lrwx------ 1 root root 64 May 8 11:31 0 -> /dev/null lrwx------ 1 root root 64 May 8 11:31 1 -> /dev/null lrwx------ 1 root root 64 May 8 11:31 2 -> /dev/null lrwx------ 1 root root 64 May 8 11:31 3 -> /dev/ptmx lrwx------ 1 root root 64 May 8 11:31 4 -> socket:[7774817] lrwx------ 1 root root 64 May 8 11:31 5 -> /dev/ptmx lrwx------ 1 root root 64 May 8 11:31 6 -> socket:[7774829] lrwx------ 1 root root 64 May 8 11:31 7 -> /dev/ptmx
maps
: このプロセスに関連するさまざまな実行ファイルおよびライブラリーファイルにマップするメモリーの一覧。プロセスの複雑さによっては、このファイルが長くなる可能性がありますが、sshd プロセスからの出力例は以下のように始まります。08048000-08086000 r-xp 00000000 03:03 391479 /usr/sbin/sshd 08086000-08088000 rw-p 0003e000 03:03 391479 /usr/sbin/sshd 08088000-08095000 rwxp 00000000 00:00 0 40000000-40013000 r-xp 0000000 03:03 293205 /lib/ld-2.2.5.so 40013000-40014000 rw-p 00013000 03:03 293205 /lib/ld-2.2.5.so 40031000-40038000 r-xp 00000000 03:03 293282 /lib/libpam.so.0.75 40038000-40039000 rw-p 00006000 03:03 293282 /lib/libpam.so.0.75 40039000-4003a000 rw-p 00000000 00:00 0 4003a000-4003c000 r-xp 00000000 03:03 293218 /lib/libdl-2.2.5.so 4003c000-4003d000 rw-p 00001000 03:03 293218 /lib/libdl-2.2.5.so
mem
: プロセスによって保持されるメモリー。このファイルはユーザーが読み取ることはできません。root
: プロセスのルートディレクトリーへのリンク。stat
- プロセスのステータスstatm
- プロセスによって使用されているメモリーのステータス以下は、/proc/statm
ファイルの例です。263 210 210 5 0 205 0
7 列は、プロセスの異なるメモリー統計に関連します。左から右に、使用されているメモリーの次の側面を報告します。- プログラムの合計サイズ(キロバイト単位)。
- メモリー部分のサイズ(キロバイト単位)。
- 共有されるページ数。
- コードであるページ数。
- データ/スタックページ数。
- ライブラリーページ数。
- ダーティーページの数。
status
-stat
またはstatm
よりも読み取り可能な形式のプロセスのステータス。sshd の出力例を以下に示します。Name: sshd State: S (sleeping) Tgid: 797 Pid: 797 PPid: 1 TracerPid: 0 Uid: 0 0 0 0 Gid: 0 0 0 0 FDSize: 32 Groups: VmSize: 3072 kB VmLck: 0 kB VmRSS: 840 kB VmData: 104 kB VmStk: 12 kB VmExe: 300 kB VmLib: 2528 kB SigPnd: 0000000000000000 SigBlk: 0000000000000000 SigIgn: 8000000000001000 SigCgt: 0000000000014005 CapInh: 0000000000000000 CapPrm: 00000000fffffeff CapEff: 00000000fffffeff
この出力の情報には、プロセス名と ID、状態(S (sleeping)
、R (実行中)、プロセスを実行しているユーザー/グループ ID、メモリー使用量に関する詳細なデータ)
が含まれます。
5.3.1.1. /proc/self/
/proc/self/
ディレクトリーは、現在実行中のプロセスへのリンクです。これにより、プロセスはプロセス ID を把握せずに自身を確認することができます。
シェル環境内で、
/proc/self/
ディレクトリーを一覧表示すると、そのプロセスのプロセスディレクトリーを一覧表示するのと同じコンテンツが生成されます。