E.3. /proc/ 内のディレクトリー
カーネルに関する一般的な情報は、
/proc/
ディレクトリー内のディレクトリーおよびサブディレクトリーにグループ化されます。
E.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/
プロセスディレクトリー vanishes になります。
各プロセスディレクトリーには、以下のファイルが含まれます。
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 (running)
など)、プロセスを実行するユーザー/グループ ID、メモリー使用量に関する詳細情報が含まれます。
E.3.1.1. /proc/self/
/proc/self/
ディレクトリーは、現在実行中のプロセスへのリンクです。これにより、プロセス ID を把握せずにプロセスが自身を確認できます。
シェル環境内では、
/proc/self/
ディレクトリーの一覧が、そのプロセスのプロセスディレクトリーの一覧表示と同じ内容を生成します。