Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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 列は、プロセスのさまざまなメモリー統計に関連します。左から右に、使用されるメモリーの以下の側面を報告します。
    1. プログラム合計サイズ(キロバイト単位)。
    2. メモリー部分のサイズ(キロバイト単位)。
    3. 共有されるページ数。
    4. コードであるページ数。
    5. データ/スタックのページ数。
    6. ライブラリーページ数。
    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/ ディレクトリーの一覧が、そのプロセスのプロセスディレクトリーの一覧表示と同じ内容を生成します。