Scroll to navigation

PROC(5) Linux Programmer's Manual PROC(5)

名前

proc - プロセスの情報を含む擬似ファイルシステム

説明

proc ファイルシステムは擬似的なファイルシステムであり、 カーネル内のデータへのインターフェースとして使用される。 一般的には /proc にマウントされる。 大部分のファイルは読み出し専用 (read-only) であるが、 いくつかのファイルは書き込み可能であり、 そのファイルに書き込めばカーネルの内部変数を変更できる。
以下は /proc 階層の簡単なあらましである。
/proc/[pid]
実行中のプロセスについてのサブディレクトリ。 サブディレクトリ名は (そのプロセスの) プロセス ID である。 各サブディレクトリは、以下の擬似ファイルとディレクトリを含む。
/proc/[number]/auxv (カーネル 2.6.0-test7 以降)
実行時にプロセスに渡された ELF インタプリタ情報が格納されている。 個々のエントリは、 unsigned long 型の ID 1 個に unsigned long 型の値 1 個が続くフォーマットである。 最後のエントリには 0 が 2 個入っている。
/proc/[pid]/cgroup (Linux 2.6.24 以降)
このファイルは、プロセスやタスクが所属するコントロールグループを示す。 cgroup の各階層についてエントリーが 1 つあり、 各エントリーは以下の形式のコロン区切りのフィールドで構成される。
5:cpuacct,cpu,cpuset:/daemons
コロン区切りの各フィールドは、左から右の順で、以下の意味を持つ。
1.
階層 ID 番号
2.
その階層に関連付けたサブシステムの集合
3.
プロセスが所属する階層内のコントロールグループ
このファイルが存在するのは、カーネルのコンフィギュレーション・オプショ ン CONFIG_CGROUPS を有効にした場合だけである。
/proc/[pid]/cmdline
プロセスの完全なコマンド行を保持する。ただし、そのプロセスがゾンビプロセス の場合は、このファイルは空となる。つまり、このファイルを読み出しても一文字 も返らない。このファイルではコマンドライン引き数が、 NULL バイト ('\0') で区切られた文字列として書かれており、 最後の文字列の後に NULL バイトが一つ置かれる。
/proc/[pid]/coredump_filter (kernel 2.6.23 以降)
core(5) 参照。
/proc/[pid]/cpuset (kernel 2.6.12 以降)
cpuset(7) 参照。
/proc/[pid]/cwd
プロセスのカレントワーキングディレクトリへのシンボリックリンク。 例えば、プロセス 20 のカレントワーキングディレクトリを見つけるためには、 次のようにすればよい。
 

$  cd /proc/20/cwd; /bin/pwd
    

 
pwd コマンドはシェルの内部コマンドのことがよくあり、 うまく動作しないかもしれない。 bash(1) では pwd -P を使ってもよい。
 
マルチスレッドプロセスでは、メインスレッドがすでに終了している場合、 このシンボリックリンクの内容は参照できない (スレッドの終了は通常 pthread_exit(3) を呼び出しにより行われる)。
/proc/[pid]/environ
このファイルはプロセスの環境変数を含んでいる。 各エントリは NULL バイト ('\0') で区切られていて、 末尾に NULL バイトがあるかもしれない。 したがって、プロセス 1 の環境変数を表示するためには 次のようにすればよい。
$ (cat /proc/1/environ; echo) | tr '\000' '\n'

/proc/[pid]/exe
Linux 2.2 以降では、このファイルはシンボリックリンクで、 実行可能コマンドの実際のパス名を格納している。 このシンボリックリンクは通常のように辿ることができる; これをオープンすると実行可能ファイルがオープンされる。 (コマンドラインで) /proc/[pid]/exe と入力すると、プロセス番号 [pid] で実行されている 実行可能ファイルをもう一つ実行することができる。 マルチスレッドプロセスでは、メインスレッドがすでに終了している場合、 このシンボリックリンクの内容は参照できない (スレッドの終了は通常 pthread_exit(3) を呼び出しにより行われる)。
 
Linux 2.0 以前では、 /proc/[pid]/exe は実行されたバイナリへのポインタで、シンボリックリンクのように見える。 Linux 2.0 以前では、このファイルに対して readlink(2) を実行すると、次のフォーマットの文字列が返る。
 

[デバイス番号]:iノード番号
 
たとえば、[0301]:1502 はメジャーデバイス番号 03 (IDE, MFM などのドライブ) マイナーデバイス番号 01 (最初のドライブの最初のパーティション) の デバイス上の iノード番号 1502 である。
 
-inum オプションをつけて find(1) を使うと、 このファイルの所在を探すことができる。
/proc/[pid]/fd
プロセスがオープンしたファイル各々に対するエントリを含むサブディレクトリ。 ファイルディスクリプタがファイル名で、 実際のファイルへのシンボリックリンクになっている。 したがって 0 は標準入力、1 は標準出力、2 は標準エラー出力、などとなる。
 
マルチスレッドプロセスでは、メインスレッドがすでに終了している場合、 このディレクトリの内容は参照できない (スレッドの終了は通常 pthread_exit(3) を呼び出しにより行われる)。
 
コマンドライン引き数としてファイル名を受け取るが、引き数が 渡されなかった場合 に標準入力から入力を受け取らないようなプログラムや、 コマンドライン引き数とし て書き込みファイルを受け取るが、引き数が 渡されなかった場合に標準出力に出力を 行わないようなプログラムであっても、 /proc/[pid]/fd を使うことで標準入力や 標準出力を使用できるようになる。 例えば、 -i を入力ファイルを指定するフラ グ、 -o を出力ファイルを指定するフラグと仮定すると、
$ foobar -i /proc/self/fd/0 -o /proc/self/fd/1 ...

 
を実行することにより、フィルタとして動作させることができる。
 
/proc/self/fd/N は、ある種の UNIX や UNIX 風のシステムにある /dev/fd/N とだいたい同じである。 事実 Linux のたいていの MAKEDEV スクリプトは、 /dev/fd/proc/self/fd へのシンボリックリンクにしている。
 
ほとんどのシステムでは、シンボリックリンク /dev/stdin, /dev/stdout, /dev/stderr が提供されており、それぞれ /proc/self/fd 内のファイル 0, 1, 2 にリンクされている。 したがって、上述のサンプルコマンドは次のようにも書くことができる。
$ foobar -i /dev/stdin -o /dev/stdout ...

/proc/[pid]/fdinfo/ (kernel 2.6.22 以降)
このサブディレクトリには、そのプロセスがオープンしているファイル毎の エントリが入っており、ファイルディスクリプタがファイル名となっている。 各ファイルの内容を読み出すことで、対応するファイルディスクリプタに関する 情報を得ることができる。以下に例を示す。
$ cat /proc/12015/fdinfo/4 pos: 1000 flags: 01002002

 
pos フィールドは 10 進数で、現在のファイルオフセットを示す。 flags フィールドは 8 進数で、 ファイルのアクセスモードとファイル状態フラグを示す ( open(2) 参照)。
 
このディレクトリのファイルは、プロセスの所有者だけが読み出すことができる。
/proc/[pid]/limits (kernel 2.6.24 以降)
このファイルは、そのプロセスの各リソース制限について、 ソフト・リミット、ハード・リミット、計測単位を表示する ( getrlimit(2) 参照)。 このファイルは、プロセスの実 UID を持つものだけが読み出すことができる。
/proc/[pid]/maps
現在マップされているメモリ領域とそのアクセスパーミッションを含む。
 
フォーマットは以下のとおり:
 
address           perms offset  dev   inode   pathname
08048000-08056000 r-xp 00000000 03:0c 64593   /usr/sbin/gpm
08056000-08058000 rw-p 0000d000 03:0c 64593   /usr/sbin/gpm
08058000-0805b000 rwxp 00000000 00:00 0
40000000-40013000 r-xp 00000000 03:0c 4165    /lib/ld-2.2.4.so
40013000-40015000 rw-p 00012000 03:0c 4165    /lib/ld-2.2.4.so
4001f000-40135000 r-xp 00000000 03:0c 45494   /lib/libc-2.2.4.so
40135000-4013e000 rw-p 00115000 03:0c 45494   /lib/libc-2.2.4.so
4013e000-40142000 rw-p 00000000 00:00 0
bffff000-c0000000 rwxp 00000000 00:00 0
    
 
ここで "address" はプロセスのアドレス空間でそのメモリ領域が占めている アドレスで、"perms" はパーミッションのセットである。
 

r = read w = write x = execute s = shared p = private (copy on write)

 
"offset" はファイル (などの) 中でのオフセット、 "dev" はデバイス (メジャーデバイス番号:マイナーデバイス番号)、 "inode" はそのデバイスの i ノード番号である。 これが 0 のときは、bss (初期化されていないデータ領域) の場合のように このメモリ領域にはどの i ノードも割り当てられていないことを意味している。
 
Linux 2.0 ではパス名を書いたフィールドがない。
/proc/[pid]/mem
このファイルは、 open(2), read(2), lseek(2) を通して、プロセスのメモリのページにアクセスするために使われる。
/proc/[pid]/mountinfo (Linux 2.6.26 以降)
このファイルには、マウントポイントについての情報が入っている。 以下のような形式の行から構成される。
36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue (1)(2)(3) (4) (5) (6) (7) (8) (9) (10) (11)
括弧付きの数字は、以下の説明のためのものである。
(1)
マウント ID: マウントの一意な識別子 ( umount(2) の後は再利用されるかもしれない)。
(2)
parent ID: 親マウントの ID (マウントツリーの最上位の場合は自分自身の ID となる)。
(3)
major:minor: ファイルシステム上のファイルの st_dev の値 (stat(2) 参照)。
(4)
ルート: そのファイルシステム内のマウントのルート。
(5)
マウントポイント: マウントポイントのそのプロセスのルートからの相対パス。
(6)
マウントオプション: 各マウントのオプション。
(7)
オプションフィールド: "tag[:value]" 形式のフィールドが 0 個以上並ぶ。
(8)
セパレータ: オプションフィールドの終わりを示す。
(9)
ファイルシステム種別: ファイルシステムの名前。 "type[.subtype]" という形式となる。
(10)
マウント元: ファイルシステム固有の情報。ない場合は "none" となる。
(11)
super options: スーパーブロック単位のオプション。
解釈する側は認識できないオプションフィールドは全て無視すべきである。 現在のところ、オプションフィールドとしては以下のようなものがある。
shared:X
マウントはピアグループ (peer group) X で共有されている。
master:X
マウントはピアグループ (peer group) X のスレーブである。
propagate_from:X
マウントはスレーブであり、ピアグループ X (*) から mount propagation を受信する。
unbindable
マウントは unbind できない。
(*) X は、プロセスの root で直近の dominant peer group である。 X がマウントの直接のマスターである場合や、 同じ root に dominant peer group がない場合は、 "master:X" フィールドだけが存在し、 "propagate_from:X" フィールドは存在しない。
 
mount propagation の詳細については、カーネルソースツリー内の Documentation/filesystems/sharedsubtree.txt を参照。
/proc/[pid]/mounts (Linux 2.4.19 以降)
そのプロセスのマウント名前空間に現在マウントされている 全ファイルシステムのリスト。 このファイルのフォーマットは fstab(5) に載っている。 カーネル 2.6.15 以降では、このファイルを監視することができる (pollable)。 このファイルを読み出し用にオープンした後で、このファイルに変更があると (つまりファイルシステムのマウントやアンマウントがあると)、 select(2) ではそのファイルディスクリプタは読み出し可能となり、 poll(2)epoll_wait(2) ではそのファイルはエラー状態として通知される。
/proc/[pid]/mountstats (Linux 2.6.17 以降)
このファイルを通じて、そのプロセスの名前空間内のマウントポイントに関する 各種情報 (統計、設定情報) を参照できる。 ファイルの各行は以下のフォーマットである。
device /dev/sda7 mounted on /home with fstype ext3 [statistics] ( 1 ) ( 2 ) (3 ) (4)
各行のフィールドは以下の通りである。
(1)
マウントされているデバイス名 (対応するデバイスがない場合は "nodevice" となる)。
(2)
マウントポイントのファイルシステムツリーにおけるパス名。
(3)
ファイルシステム種別。
(4)
追加の統計や設定情報。 現在のところ (Linux 2.6.26 時点では)、 このフィールドで情報が提供されているのは NFS ファイルシステムだけである。
このファイルはプロセスの所有者だけが読み出すことができる。
/proc/[pid]/ns/ (Linux 3.0 以降)
このサブディレクトリには、名前空間毎に 1 エントリが置かれる。 各エントリは setns(2) による操作をサポートしている。 名前空間に関する情報は clone(2) を参照。
/proc/[pid]/ns/ipc (Linux 3.0 以降)
このファイルをファイルシステムのどこか他の場所に bind mount することで ( mount(2) 参照)、現在この名前空間にいる全てのプロセスが終了したとしても、 pid で指定されたプロセスの IPC 名前空間は有効な状態で保たれる。
 
このファイルをオープンすると、 pid で指定されたプロセスの IPC 名前空間のファイルハンドルが返される。このファイルディスクリプタがオープンされている限り、この名前空間にいる全てのプロセスが終了したとしても、この IPC 名前空間は有効なままとなる。このファイルディスクリプタは setns(2) に渡すことができる。
/proc/[pid]/ns/net (Linux 3.0 以降)
このファイルをファイルシステムのどこか他の場所に bind mount することで ( mount(2) 参照)、現在この名前空間にいる全てのプロセスが終了したとしても、 pid で指定されたプロセスのネットワーク名前空間は有効な状態で保たれる。
 
このファイルをオープンすると、 pid で指定されたプロセスのネットワーク名前空間のファイルハンドルが返される。このファイルディスクリプタがオープンされている限り、この名前空間にいる全てのプロセスが終了したとしても、このネットワーク名前空間は有効なままとなる。このファイルディスクリプタは setns(2) に渡すことができる。
/proc/[pid]/ns/uts (Linux 3.0 以降)
このファイルをファイルシステムのどこか他の場所に bind mount することで ( mount(2) 参照)、現在この名前空間にいる全てのプロセスが終了したとしても、 pid で指定されたプロセスの UTS 名前空間は有効な状態で保たれる。
 
このファイルをオープンすると、 pid で指定されたプロセスの UTS 名前空間のファイルハンドルが返される。このファイルディスクリプタがオープンされている限り、この名前空間にいる全てのプロセスが終了したとしても、この UTS 名前空間は有効なままとなる。このファイルディスクリプタは setns(2) に渡すことができる。
/proc/[pid]/numa_maps (Linux 2.6.14 以降)
numa(7) を参照。
/proc/[pid]/oom_adj (Linux 2.6.11 以降)
このファイルは、メモリ不足 (OOM) の状況下で どのプロセスを殺すべきかを選択す るのに使用されるスコアを 調整するのに使用される。 カーネルは、プロセスの oom_score 値のビットシフト操作に、この値を使用する。 この値として有効な値 は -16 から +15 までと、 特別な意味を持つ -17 である。 -17 はそのプロセス に対する OOM-killing を完全に無効にすることを意味する。 正の値ほど、そのプロ セスが OOM-killer により殺される可能性が高くなり、 負の値ほど可能性が低くなる。 このファイルのデフォルト値は 0 である。 新しいプロセスは親プロセスの oom_adj の設定を継承する。 このファイルを変更するためには、プロセスは特権 ( CAP_SYS_RESOURCE) を持っていなければならない。
/proc/[pid]/oom_score (Linux 2.6.11 以降)
このファイルは、OOM-killer のプロセス選択用として、カーネルが このプロセス に対して与えた現在のスコアを表示する。 高いスコアは、そのプロセスが OOM-killer により選択される 可能性が高いことを意味する。 このスコアの基本は そのプロセスが使用しているメモリ量であり、 以下の要因により加算 (+) 減算 (-) が行われる。
*
そのプロセスが多くの子プロセスを fork(2) を使って作成しているか (+)。
*
そのプロセスが長時間実行されて来たか、 もしくは 多くの CPU 時間を使用しているか (-)。
*
そのプロセスが低い nice 値 (> 0) を持っているか (+)。
*
そのプロセスが特権を持っているか (-)。
*
そのプロセスが direct hardware access を行っているか (-)。
oom_score は、そのプロセスの oom_adj 設定で規定されるビットシフト調整にも影響を与える。
/proc/[pid]/root
UNIX と Linux では、 ファイルシステムのルート (/) をプロセスごとに別々に できる。これはシステムコール chroot(2) によって設定する。 このファイルは プロセスのルートディレクトリを指すシンボリックリンクで、 exe や fd/* など と同じような動作をする。
 
マルチスレッドプロセスでは、メインスレッドがすでに終了している場合、 このシンボリックリンクの内容は参照できない (スレッドの終了は通常 pthread_exit(3) を呼び出しにより行われる)。
/proc/[pid]/smaps (Linux 2.6.14 以降)
このファイルは、そのプロセスの各マッピングのメモリ消費量を表示する。 マッピングのそれぞれについて、以下のような内容が表示される。
08048000-080bc000 r-xp 00000000 03:02 13130 /bin/bash Size: 464 kB Rss: 424 kB Shared_Clean: 424 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB

最初の行には、 /proc/[pid]/maps で表示されるマッピングと同じ情報が表示される。 残りの行には、マッピングのサイズ、現在 RAM 上に存在するマッピングの量、 マッピング内の共有ページのうちクリーンなページ数、ダーティなページ数、 マッピング内のプライベートページのうちクリーンなページ数、 ダーティなページ数、を示す。
 
このファイルが存在するのは、カーネルのコンフィギュレーション・オプション CONFIG_MMU を有効にした場合だけである。
/proc/[pid]/stat
プロセスの状態についての情報。 これは ps(1) で使われ、 /usr/src/linux/fs/proc/array.c で定義されている。
 
各フィールドを順番に、 scanf(3) のフォーマット指定子付きで以下に示す。
pid %d
プロセス ID。
comm %s
括弧でくくられた実行形式のファイル名。 実行形式がスワップアウトされているかどうかによらず、見ることができる。
state %c
"RSDZTW" のどれか 1 文字。 R は実行中 (running)、 S は割り込み可能な休眠状態 (sleeping in an interruptible wait)、 D は割り込み不可能なディスクスリープの待機状態 (waiting in uninterruptible disk sleep)、 Z はゾンビ状態 (zombie)、 T はトレースされている (traced) か (シグナルにより) 停止している状態 (stopped)、 W はページング中 (paging) を表している。
ppid %d
親プロセスの PID。
pgrp %d
プロセスのプロセスグループ ID。
session %d
プロセスのセッション ID。
tty_nr %d
プロセスの制御端末 (マイナー・デバイス番号はビット 31〜20 と 7〜0 にまたがって格納され、 メジャー・デバイス番号はビット 15〜8 に格納される)。
tpgid %d
プロセスの制御端末のフォアグランド・プロセス・グループの ID。
flags %u (Linux 2.6.22 より前は %lu)
プロセスのカーネルフラグワード。 ビットの意味は、 <linux/sched.h> で定義されている PF_* を参照すること。 詳細はカーネルのバージョンに依存する。
minflt %lu
プロセスが引き起こしたマイナーフォールト (minor fault、ディスクから メモリページへのロードを必要としないフォールト) の回数。
cminflt %lu
(そのプロセスが終了を待っている) 子プロセスが引き起こしたマイナーフォールトの回数。
majflt %lu
プロセスが引き起こしたメジャーフォールト (major fault、ディスクから メモリページへのロードを必要とするフォールト) の回数。
cmajflt %lu
(そのプロセスが終了を待っている) 子プロセスが引き起こしたメジャーフォールトの回数。
utime %lu
このプロセスがユーザーモードでスケジューリングされた時間の合計。 clock tick 単位で計測される ( sysconf(_SC_CLK_TCK) で割った値が表示される)。 この値にはゲスト時間 guest_time (仮想 CPU の実行に消費された時間) も含まれる。これは、ゲスト時間のフィールドを認識しないアプリケーション において、ゲスト時間分を計算に入れ損ねないようにするためである。
stime %lu
プロセスのカーネルモードでの実行時間 (単位 jiffies)。 このプロセスがカーネルモードでスケジューリングされた時間の合計。 clock tick 単位で計測される ( sysconf(_SC_CLK_TCK) で割った値が表示される)。
cutime %ld
このプロセスの子プロセスで、終了待ち (waited-for) のプロセスが、 ユーザモードでスケジューリングされた時間の合計。 clock tick 単位で計測される ( sysconf(_SC_CLK_TCK) で割った値が表示される)。 ( times(2) も参照すること。) この値にはゲスト時間 cguest_time (仮想 CPU を実行するのに消費した時間、下記参照) も含まれる。
cstime %ld
このプロセスの子プロセスで、終了待ち (waited-for) のプロセスが、 カーネルモードでスケジューリングされた時間の合計。 clock tick 単位で計測される ( sysconf(_SC_CLK_TCK) で割った値が表示される)。
priority %ld
(Linux 2.6 の場合の説明) リアルタイム・スケジューリングポリシー (下記の policy ; sched_setscheduler(2) 参照) で動作しているプロセスでは、 この 値はスケジューリング優先度を反転した値 (スケジューリング優先度を マイナスにし た値) となる。値は -2 から -100 までの範囲の数値で、 それぞれリアルタイム優先 度の 1 から 9 に対応する。 リアルタイム以外のスケジューリングポリシーで動作し ているプロセスでは、 この値はカーネル内で管理されている nice 値そのもの ( setpriority(2)) となる。 カーネルは nice 値を 0 (高) から 39 (低) の範囲 の値として保持しており、 それぞれユーザに見える nice 値の -20 から 19 に対応 する。
 
Linux 2.6 より前では、このプロセスに割り当てられたスケジューリング 重みを変換した値が表示されていた。
nice %ld
nice 値 (setpriority(2) 参照)。 19 (最低優先) から -20 (最高優先) の範囲の値である。
num_threads %ld
このプロセスのスレッド数 (Linux 2.6 以降)。 カーネル 2.6 より前では、このフィールドは削除されたフィールドの 場所埋めとして 0 にハードコードされていた。
itrealvalue %ld
インターバルタイマによって、次に SIGALRM がプロセスへ送られるまでの時間 (単位 jiffies)。 カーネル 2.6.17 以降では、このフィールドはメンテナンスされなくなり、 0 にハードコードされている。
starttime %llu (Linux 2.6 より前は %lu)
プロセスの起動時刻。システムが起動した時刻が起点 (単位 jiffies)。
vsize %lu
仮想メモリのサイズ。単位はバイト。
rss %ld
Resident Set Size。プロセスが持っている実メモリ上のページ数。 これはちょうどテキスト、データ、スタック空間に使われているページ数である。 デマンドロードされていないページや スワップアウトされたページの数は含んでいない。
rsslim %lu
このプロセスの rss の現在のソフト・リミット (バイト単位)。 getpriority(2)RLIMIT_RSS の説明を参照。
startcode %lu
プログラムテキストが実行可能であるような領域の先頭アドレス。
endcode %lu
プログラムテキストが実行可能であるような領域の末尾アドレス。
startstack %lu
スタックの開始アドレス (すなわち、スタックの底)。
kstkesp %lu
現在の ESP (スタックポインタ) の値。 プロセスのカーネルスタックページにある。
kstkeip %lu
現在の EIP (インストラクションポインタ) の値。
signal %lu
処理待ちのシグナルのビットマップ。 10 進数で表示される。 このフィールドは廃止予定である。 リアルタイム・シグナルに関する情報は表示されないからである。 代わりに /proc/[pid]/status を使うこと。
blocked %lu
ブロックされた (blocked) シグナルのビットマップ。 10 進数で表示される。 このフィールドは廃止予定である。 リアルタイム・シグナルに関する情報は表示されないからである。 代わりに /proc/[pid]/status を使うこと。
sigignore %lu
無視された (ignored) シグナルのビットマップ。 10 進数で表示される。 このフィールドは廃止予定である。 リアルタイム・シグナルに関する情報は表示されないからである。 代わりに /proc/[pid]/status を使うこと。
sigcatch %lu
捕捉された (caught) シグナルのビットマップ。 10 進数で表示される。 このフィールドは廃止予定である。 リアルタイム・シグナルに関する情報は表示されないからである。 代わりに /proc/[pid]/status を使うこと。
wchan %lu
プロセスが待っている「チャネル」。 これはシステムコールのアドレスであり、 文字名が必要ならば (アドレスとシステムコール名との) 対応表から見つけられる (もし /etc/psdatabase [訳注: このファイル名はパッケージによる] を更新 しているならば、 ps -l して WCHAN フィールドを見よ)。
nswap %lu
スワップされたページ数 (メンテナンスされていない)。
cnswap %lu
子プロセスの nswap の累計 (メンテナンスされていない)。
exit_signal %d (Linux 2.1.22 以降)
プロセスが死んだときに親プロセスに送られるシグナル。
processor %d (Linux 2.2.8 以降)
このプロセスを最後に実行した CPU の番号。
rt_priority %u (Linux 2.5.19 以降; Linux 2.6.22 より前は %lu)
リアルタイム・スケジューリングの優先度。 リアルタイム・ポリシーの元でスケジューリングされるプロセスでは 1 から 99 の範囲の値となり、 リアルタイム以外のスケジューリングポリシーのプロセスでは 0 となる ( sched_setscheduler(2) 参照)。
policy %u (Linux 2.5.19 以降; Linux 2.6.22 より前は %lu)
スケジューリング・ポリシー ( sched_setscheduler(2) 参照)。 値は、 linux/sched.h の SCHED_* 定数を使ってデコードすればよい。
delayacct_blkio_ticks %llu (Linux 2.6.18 以降)
(clock tick (100分の1秒) 単位での) ブロック I/O の総遅延量。
guest_time %lu (Linux 2.6.24 以降)
プロセスのゲスト時間 (ゲスト OS の仮想 CPU を実行するのに消費された時間)。 clock tick 単位で計測される ( sysconf(_SC_CLK_TCK) で割った値が表示される)。
cguest_time %ld (Linux 2.6.24 以降)
プロセスの子プロセスのゲスト時間。 clock tick 単位で計測される ( sysconf(_SC_CLK_TCK) で割った値が表示される)。
/proc/[pid]/statm
(ページ単位で計測した) メモリ使用量についての情報を提供する。 各列は以下の通りである。
size プログラムサイズの総計 ( /proc/[pid]/status の VmSize と同じ) resident 実メモリ上に存在するページ ( /proc/[pid]/status の VmRSS と同じ) share 共有ページ (共有マッピングされているページ) text テキスト (コード) lib ライブラリ (Linux 2.6 では未使用) data データ + スタック dt ダーティページ (Linux 2.6 では未使用)

/proc/[pid]/status
/proc/[pid]/stat/proc/[pid]/statm にある多くの情報を、人間が解析しやすい形式で提供する。 以下に例を示す。
$ cat /proc/$$/status Name: bash State: S (sleeping) Tgid: 3515 Pid: 3515 PPid: 3452 TracerPid: 0 Uid: 1000 1000 1000 1000 Gid: 100 100 100 100 FDSize: 256 Groups: 16 33 100 VmPeak: 9136 kB VmSize: 7896 kB VmLck: 0 kB VmHWM: 7572 kB VmRSS: 6316 kB VmData: 5224 kB VmStk: 88 kB VmExe: 572 kB VmLib: 1708 kB VmPTE: 20 kB Threads: 1 SigQ: 0/3067 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000010000 SigIgn: 0000000000384004 SigCgt: 000000004b813efb CapInh: 0000000000000000 CapPrm: 0000000000000000 CapEff: 0000000000000000 CapBnd: ffffffffffffffff Cpus_allowed: 00000001 Cpus_allowed_list: 0 Mems_allowed: 1 Mems_allowed_list: 0 voluntary_ctxt_switches: 150 nonvoluntary_ctxt_switches: 545

フィールドの詳細は以下の通りである。
*
Name: このプロセスにより実行されたコマンド。
*
State: プロセスの現在の状態。 "R (running; 実行中)", "S (sleeping; 休眠状態)", "D (disk sleep; ディスク待ちの休眠状態)", "T (stopped; 停止状態)", "T (tracing stop; トレースによる停止)", "Z (zombie; ゾンビ状態)", "X (dead; 死亡)" のいずれかである。
*
Tgid: スレッドグループ ID (すなわち、プロセス ID)。
*
Pid: スレッド ID (gettid(2) 参照)。
*
PPid: 親プロセスの PID。
*
TracerPid: このプロセスをトレースしているプロセスの PID (トレースされていない場合は 0)。
*
Uid, Gid: 実 UID/GID、実効 UID/GID、保存 set-UID/GID、ファイルシステム UID/GID。
*
FDSize: 現在割り当てられているファイルディスクリプタのスロット数。
*
Groups: 補助グループのリスト。
*
VmPeak: 仮想メモリサイズのピーク値。
*
VmSize: 仮想メモリサイズ。
*
VmLck: ロックされているメモリサイズ ( mlock(3) 参照)。
*
VmHWM: 実メモリ上に存在するページサイズ (resident set size) のピーク値 ("high water mark")。
*
VmRSS: 実メモリ上に存在するページサイズ。
*
VmData, VmStk, VmExe: データ、スタック、テキストセグメントのサイズ。
*
VmLib: 共有ライブラリ・コードのサイズ。
*
VmPTE: ページ・テーブル・エントリのサイズ (Linux 2.6.10 以降)。
*
Threads: このスレッドが属するプロセスのスレッド数。
*
SigQ: このフィールドにはスラッシュで区切られた 2 つの数字が入っている。この数字はこのプロセスの実ユーザ ID 宛にキューイングされたシグナルに関するものである。一つ目の数字は、この実ユーザ ID 宛に現在キューイングされているシグナル数である。二つ目の数字は、このプロセス宛にキューイングされたシグナル数に関するリソース上限値である ( getrlimit(2)RLIMIT_SIGPENDING の説明を参照)。
*
SigPnd, ShdPnd: スレッド宛およびプロセス全体宛の処理待ちシグナルの数 ( pthreads(7), signal(7) 参照)。
*
SigBlk, SigIgn, SigCgt: ブロックされるシグナル、無視されるシグナル、捕捉待ちのシグナルを 示すマスク値 ( signal(7))。
*
CapInh, CapPrm, CapEff: 継承可能 (inheritable)、許可 (permitted)、実効 (effective) の各ケーパビリティセットで有効になっているケーパビリティのマスク値 ( capabilities(7) 参照)。
*
CapBnd: ケーパビリティ・バウンディングセット (カーネル 2.6.26 以降、 capabilities(7) 参照)。
*
Cpus_allowed: このプロセスが実行を許可されている CPU のマスク値 (Linux 2.6.24 以降、 cpuset(7) 参照)。
*
Cpus_allowed_list: 前項と同じだが、「リスト形式」での表示 (Linux 2.6.26 以降、 cpuset(7) 参照)。
*
Mems_allowed: このプロセスが使用できるメモリノードのマスク値 (Linux 2.6.24 以降、 cpuset(7) 参照)。
*
Mems_allowed_list: 前項と同じだが、「リスト形式」での表示 (Linux 2.6.26 以降、 cpuset(7) 参照)。
*
voluntary_context_switches, nonvoluntary_context_switches: 自発的/非自発的なコンテキストスイッチの回数 (Linux 2.6.23 以降)。
/proc/[pid]/task (Linux 2.6.0-test6 以降)
このディレクトリには、そのプロセスのスレッド情報を含む サブディレクトリが 1 スレッドにつき 1 つ置かれる。 各サブディレクトリの名前はスレッドのスレッド ID ( [tid]) を示す数字である (gettid (2) を参照)。 これらの各サブディレクトリには、 /proc/[pid] ディレクトリ以下と同じ名前と内容のファイル群がある。 すべてのスレッドで共有される属性の場合、 task/[tid] サブディレクトリ以下の各ファイルの内容は 親ディレクトリ /proc/[pid] の対応するファイルと同じになることだろう (例えば、マルチスレッド・プロセスではファイル task/[tid]/cwd はいずれも親ディレクトリ内の /proc/[pid]/cwd と同じ値を持つことになる。なぜなら、一つのプロセスに属すすべての スレッドは作業ディレクトリを共有するからである)。 スレッド毎に独立な属性の場合、 task/[tid] サブディレクトリ以下の各ファイルは異なる値を持つことがある (例えば、ファイル task/[tid]/status はスレッド毎に異なる値を持つ可能性がある)。
 
マルチスレッドプロセスでは、メインスレッドがすでに終了している場合、 /proc/[pid]/task ディレクトリの内容は参照できない (スレッドの終了は通常 pthread_exit(3) を呼び出しにより行われる)。
/proc/apm
Advanced Power Management のバージョンとバッテリ情報。 カーネルのコンパイル時に CONFIG_APM を定義したときに存在する。
/proc/bus
インストールされている各バス用にサブディレクトリがある。
/proc/bus/pccard
PCMCIA デバイスの情報が書かれるサブディレクトリ。 カーネルのコンパイル時に CONFIG_PCMCIA を定義したときに存在する。
/proc/bus/pccard/drivers
/proc/bus/pci
いくつかのサブディレクトリがあり、 PCI バス・インストールされているデバイス・ デバイスドライバの情報が書かれた仮想ファイルがある。 これらのファイルのうちいくつかは ASCII フォーマットではない。
/proc/bus/pci/devices
PCI デバイスの情報。 lspci(8)setpci(8) でアクセスすることができる。
/proc/cmdline
ブート時に Linux カーネルに渡された引き数。 引き数の受け渡しは、たいてい lilo(8)grub(8) といったブートマネージャを使って行われる。
/proc/config.gz (Linux 2.6 以降)
このファイルでは、現在実行中のカーネルの構築時に使用された 設定オプションを参照できる。 書式は、 ( make xconfig, make config などを使って) カーネルの設定を変更した際に生成される .config ファイルのものと同じである。 ファイルの内容は圧縮されており、 zcat(1), zgrep(1) などを使うと、表示や検索ができる。 ファイルが変更されていない限り、 /proc/config.gz の内容は次のコマンドで得られる内容と同じである。
cat /lib/modules/$(uname -r)/build/.config

/proc/config.gz が提供されるのは、カーネルの設定で CONFIG_IKCONFIG_PROC が有効になっている場合のみである。
/proc/cpuinfo
このファイルは、CPU およびシステムアーキテクチャに依存する項目を 集めたもので、リストの内容はサポートされているアーキテクチャ毎に異なる。 2 つだけ共通の項目がある。 processor はプロセッサ番号で、 bogomips はカーネルの初期化時に計算されるシステム定数である。 SMP マシンでは各 CPU についての情報が書かれている。
/proc/devices
メジャーデバイス番号とデバイスグループのテキスト形式のリスト。 MAKEDEV スクリプトはこのファイルを使って、 カーネルとの整合性を保つことができる。
/proc/diskstats (Linux 2.5.69 以降)
このファイルには各ディスクデバイスのディスク I/O 統計情報が書かれている。 更に詳しい情報は、カーネルソースファイル Documentation/iostats.txt を参照すること。
/proc/dma
登録されている ISA DMA (direct memory access) チャネルのリスト。
/proc/driver
空のサブディレクトリ。
/proc/execdomains
実行ドメインのリスト (ABI パーソナリティ)。
/proc/fb
カーネルのコンパイル時に CONFIG_FB が定義されている場合、フレームバッファの情報が書かれる。
/proc/filesystems
カーネルが対応しているファイルシステムのテキスト形式のリスト。 カーネルに組み込まれてコンパイルされたファイルシステムと、 カーネルモジュールが現在ロードされているファイルシステムが列挙される ( filesystems(5) 参照)。 ファイルシステムに "nodev" という印が付いている場合、 そのファイルシステムがマウントするためのブロックデバイスを 必要としないことを意味する (例えば、 仮想ファイルシステム、ネットワークファイルシステムなど)。
 
ちなみに、マウント時にファイルシステムが指定されず、 どうやってもファイルシステムの種類を判定できなかった際に、 このファイルを mount(8) が使用するかもしれない。 その場合、このファイルに含まれるファイルシステムが試される (ただし、"nodev" の印がついたものは除く)。
/proc/fs
空のサブディレクトリ。
/proc/ide
このディレクトリは IDE バスをもつシステムに存在する。 各 IDE チャネルとそれに取り付けられている各デバイスごとにディレクトリがあり、 以下のファイルが含まれている。
 

cache              バッファサイズ (KB)
capacity           セクタ数
driver             ドライバのバージョン
geometry           物理ジオメトリと論理ジオメトリ
identify           16 進数表記
media              メディアのタイプ
model              製造者のモデル番号
settings           ドライブの設定
smart_thresholds   16 進数表記
smart_values       16 進数表記
    

 
hdparm(8) ユーティリティは、分かりやすい形式で この情報にアクセスするための手段を提供する。
/proc/interrupts
IO デバイス毎の CPU 別の割り込み回数の記録に使われる。 Linux 2.6.24 以降、少なくとも i386 と x86_64 アーキテクチャでは、 (デバイスと関連がない) システム内部の割り込みについても記録される。 システム内部の割り込みには、NMI (nonmaskable interrupt), LOC (local timer interrupt) や、SMP システムでは TLB (TLB flush interrupt), RES (rescheduling interrupt), CAL (remote function call interrupt) などがある。 簡単に読むことのできるフォーマットで、ASCII で表記されている。
/proc/iomem
Linux 2.4 における I/O メモリマップ。
/proc/ioports
現在登録され使われている I/O ポート領域のリスト。
/proc/kallsyms (Linux 2.5.71 以降)
カーネルの外部シンボル定義を保持する。 modules(X) 関係のツールがローダブルモジュールを動的にリンクしたり バインド (bind) するのに使われる。 Linux 2.5.47 以前では、微妙に異なる書式の似たようなファイルが ksyms という名前であった。
/proc/kcore
このファイルはシステムの物理メモリを表現しており、 ELF コアファイル形式 (core file format) で保持されている。 この擬似ファイルと strip されていないカーネルのバイナリ ( /usr/src/linux/vmlinux) [訳注: パッケージに依存する]) があれば、 GDB はカーネル内の任意のデータ構造の現在の状態を調べられる。
 
このファイルの大きさは物理メモリ (RAM) のサイズに 4KB を加えた値である。
/proc/kmsg
このファイルは syslog(2) システムコールでカーネルメッセージを読み出す代りに使える。 プロセスがこのファイルを読むためにはスーパーユーザー権限が必要であり、 ファイルを読み出すのは 1 つのプロセスのみに限るべきである。 カーネルメッセージを記録するために、 syslog(2) システムコールの機能を使う syslog プロセスが稼働している場合、 このファイルを読み出すべきではない。
 
このファイルの中の情報は dmesg(1) によって表示される。
/proc/ksyms (Linux 1.1.23-2.5.47)
/proc/kallsyms を参照。
/proc/loadavg
このファイルの最初の 3 つのフィールドはロードアベレージの数値で、 1, 5, 15 分 あたりの実行キュー内 (state R) または ディスク I/O 待ち (state D) のジョブ数 を与える。 これは uptime(1) などのプログラムによって得られる値と同じである。 4 番目のフィールドはスラッシュ (/) で区切られた 2 つの数値から構成される。 この数値のうち最初のものは、現在実行可能なカーネルスケジュールエンティティ (プロセス、スレッド) の数である。スラッシュの後の数値は、現在システム上に 存在するカーネルスケジュールエンティティの数である。 5 番目のフィールドは システム上に最も最近生成されたプロセスの PID である。
/proc/locks
このファイルは現在のファイルロック ( flock(2)fcntl(2)) とリース ( fcntl(2)) を表示する。
/proc/malloc (Linux 2.2 以前のみ)
コンパイルのときに CONFIGDEBUGMALLOC が定義されているときのみ、このファイルは存在する。
/proc/meminfo
このファイルはシステム上のメモリ使用量に関する統計情報を表示する。 free(1) は、このファイルを参照し、 システムの未使用および使用中のメモリ量 (物理メモリとスワップ) と、 カーネルに使われている共有メモリとバッファの情報を報告する。
/proc/modules
現在システムにロードされているモジュールのテキスト形式のリスト。 lsmod(8) も参照。
/proc/mounts
カーネル 2.4.19 より前では、このファイルは現在システムにマウントされている 全てのファイルシステムのリストであった。 Linux 2.4.19 でプロセス単位のマウント名前空間が導入されたことに伴い、 このファイルは /proc/self/mounts へのリンクとなった。 /proc/self/mounts はそのプロセス自身のマウント名前空間のマウントポイントのリストである。 このファイルのフォーマットは fstab(5) に記述されている。
/proc/mtrr
Memory Type Range Registers。 詳細は、カーネルソースファイル Documentation/mtrr.txt を参照すること。
/proc/net
さまざまなネットワークについての擬似ファイルで、 それぞれがネットワーク層の各種の状態を与える。 これらのファイルの内容は ASCII 形式なので、 cat(1) で読み出せる。 とはいえ基本コマンドの netstat(8) はこれらのファイルの内容のよりすっきりとした表示を提供する。
/proc/net/arp
アドレス解決に使われるカーネルの ARP テーブルの ASCII 可読なダンプを保持している。 動的結合されたものと固定 (preprogrammed) の両方の APP エントリを見ることができる。フォーマットは以下のとおり:
 

IP address HW type Flags HW address Mask Device 192.168.0.50 0x1 0x2 00:50:BF:25:68:F3 * eth0 192.168.0.250 0x1 0xc 00:00:00:00:00:00 * eth0

 
ここで IP address はマシンの IPv4 アドレス、 HW type はそのアドレスの RFC 826 で定められているハードウェアの形式、 Flags は ARP 構造体 ( /usr/include/linux/if_arp.h 内で定義されている) の内部フラグ、 HW address はその IP アドレスにマップされているデータリンク層のアドレス (もしわかっていれば) である。
/proc/net/dev
擬似ファイル dev はネットワークデバイスの状態情報を含んでいる。 これは送受信したパケット数、エラーとコリジョン (collision) の回数、 その他の基本的な統計を与える。 これらは ifconfig(8) がデバイスの状態を報告するのに使われる。 フォーマットは以下のとおり:
 

Inter-| Receive | Transmit face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed lo: 2776770 11307 0 0 0 0 0 0 2776770 11307 0 0 0 0 0 0 eth0: 1215645 2751 0 0 0 0 0 0 1782404 4324 0 0 0 427 0 0 ppp0: 1622270 5552 1 0 0 0 0 0 354130 5669 0 0 0 0 0 0 tap0: 7714 81 0 0 0 0 0 0 7714 81 0 0 0 0 0 0
/proc/net/dev_mcast
/usr/src/linux/net/core/dev_mcast.c で定義されており、以下の形式である。

indx interface_name dmi_u dmi_g dmi_address 2 eth0 1 0 01005e000001 3 eth1 1 0 01005e000001 4 eth2 1 0 01005e000001
/proc/net/igmp
Internet Group Management Protocol (インターネットグループ管理プロトコル)。 /usr/src/linux/net/core/igmp.c で定義されている。
/proc/net/rarp
このファイルは arp と同じフォーマットで 逆アドレス解決サービス (reverse address lookup services) rarp(8) に提供するために使われる現在の逆マップデータベースの内容を含んでいる。 RARP がカーネルコンフィグレーションに設定されていなければ、 このファイルは存在しない。
/proc/net/raw
RAW ソケットテーブルのダンプを保持している。 ほとんどの情報はデバッグ以外では 使われない。 "sl" の値はソケットのカーネルハッシュスロット、 "local_address" はローカルアドレスとプロトコル番号のペア [訳者追加: "rem_address" はリモートアドレスとプロトコル番号のペア]。 "st" はソケットの内部状態。 "tx_queue" と "rx_queue" はカーネルメモリを 消費している 送信/受信データキューのサイズ。 "tr" と "tm->when" と "rexmits" フィールドは RAW では使われていない。 "uid" フィールドはソケット生成者の実効 UID を保持している。
/proc/net/snmp
このファイルは SNMP エージェントが必要とする IP, ICMP, TCP, UDP 管理情報を ASCII データとして保持している。
/proc/net/tcp
TCP ソケットテーブルのダンプを保持している。 大部分の情報はデバッグ以外には 使われない。 sl はソケットのカーネルハッシュスロットの値、 "local_address" はローカルアドレスとポート番号のペアである。 (ソケットが接続している場合は) "rem_address" はリモートアドレスとポート番号の対である。 "st" はソケット の内部状態である。 "tx_queue" と "rx_queue" はカーネルメモリを消費している 送信/受信データキューのサイズ。 "tr" と "tm->when" と "rexmits" フィールドはソケット状態のカーネル 内部情報を保持しているが、 これらはデバッグのときにしか役に立たない。 "uid" フィールドはソケット 生成者の実効 UID を保持している。
/proc/net/udp
UDP ソケットテーブルのダンプを保持している。 大部分の情報はデバッグ以外には 使われない。 sl はソケットのカーネルハッシュスロットの値、 "local_address" はローカルアドレスとポート番号のペアである。 (ソケットが接続している場合は) "rem_address" はリモートアドレスとポート番号のペアである。 "st" はソケットの 内部状態である。 "tx_queue" と "rx_queue" はカーネルメモリを消費している 送信/受信データキューのサイズ。 "tr" と "tm->when" と "rexmits" フィールドは UDP では使われていない。 "uid" フィールドはソケット生成者の 実効 UID を保持している。 フォーマットは以下のとおり:
 

sl local_address rem_address st tx_queue rx_queue tr rexmits tm->when uid 1: 01642C89:0201 0C642C89:03FF 01 00000000:00000001 01:000071BA 00000000 0 1: 00000000:0801 00000000:0000 0A 00000000:00000000 00:00000000 6F000100 0 1: 00000000:0201 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0
/proc/net/unix
UNIX ドメインソケットのリスト。 フォーマットは以下のとおり:
 
Num RefCount Protocol Flags Type St Path 0: 00000002 00000000 00000000 0001 03 1: 00000001 00000000 00010000 0001 01 /dev/printer
 
 
ここで、Num はカーネルのテーブルスロット数、 RefCount はソケットを使用して いるユーザー数、 Protocol はいまのところいつも 0 で、Flags はソケットの状態 を保持している カーネル内部のフラグである。 Type はいまのところいつも 1 (UNIX ドメインのデータグラムソケットは、現在のカーネルではサポートされていない [訳注: 2.0.34 ではサポートされているようだ])。 St はソケットの内部状態で、Path は(もしあれば) ソケットのパス名である。
/proc/partitions
各パーティションのメジャー番号とマイナー番号が書かれている。 さらに、ブロック数とパーティション名も書かれている。
/proc/pci
カーネルの初期化時に見つかったすべての PCI デバイスのリストと その設定。
 
このファイルは非推奨であり、新しい PCI 用の /proc インターフェイス ( /proc/bus/pci) を使うこと。 このファイルは Linux 2.2 でオプションになった (カーネルのコンパイル時に CONFIG_PCI_OLD_PROC をセットすると利用可能であった)。 Linux 2.4 で再びオプションなしで有効に戻った。 さらに、Linux 2.6 で非推奨となり ( CONFIG_PCI_LEGACY_PROC をセットするとまだ利用可能であった)、 最終的に Linux 2.6.17 以降で完全に削除された。
/proc/scsi
scsi 中間レベル擬似ファイルといくつかの SCSI 低レベルドライバの ディレクトリを含むディレクトリ。 これらのファイルは ASCII で表現されているので cat(1) で読める。
 
いくつかのファイルは書き込み可能で、サブシステムの設定を変更したり、 特定の機能をオン/オフすることができる。
/proc/scsi/scsi
カーネルが知っているすべての SCSI デバイスのリスト。 このリストは起動時に (コンソールで) 見られるものとほぼ同じである。 scsi は現在のところ add-single-device コマンドのみをサポートしている。 これによりルート (root) は既知のデバイスリストへ活線挿抜 (hotplugged) デバイスを加えることができる。
 
次のコマンドを実行すると、
echo 'scsi add-single-device 1 0 5 0' > /proc/scsi/scsi

ホストアダプタ scsi1 は SCSI チャネル 0 で ID 5 LUN 0 のデバイスを探す。 もしこのアドレスに既知のデバイスがあるか、 不正なアドレスであったならばエラーが返る。
/proc/scsi/[drivername]
いまのところ [drivername] は NCR53c7xx, aha152x, aha1542, aha1740, aic7xxx, buslogic, eata_dma, eata_pio, fdomain, in2000, pas16, qlogic, scsi_debug, seagate, t128, u15-24f, ultrastore, wd7000 のどれかである。 少なくとも 1 つの SCSI ホストバスアダプタ (HBA) に ドライバが割り当てられていると、そのドライバに対応したディレクトリが現れる。 それぞれのディレクトリには、 登録されたホストアダプタに対応してファイルが作られる。 このファイルの名前は、システムの初期化の際に ホストアダプタに割り当てられた番号になる。
 
これらのファイルを読めばドライバとホストアダプタの設定や 統計などを見ることができる。
 
これらのファイルへの書き込みはホストアダプタごとに異なる動作を引き起こす。 たとえば latencynolatency コマンドを用いると、 ルート (root、スーパーユーザー) は eata_dma ドライバの隠し測定コードの オン/オフを切り替えることができる。 また lockupunlock コマンドを用いると、ルートは scsi_debug ドライバがシミュレートするバスロックアップ (bus lockup) を 制御することができる。
/proc/self
このディレクトリはプロセスに (プロセス自身の) /proc ファイルシステムへのアクセスを参照させる。 これは /proc 内の (このプロセスの) プロセス ID が名前となっている ディレクトリと全く同一である。
/proc/slabinfo
Linux 2.6.16 以降では、 カーネル設定オプション CONFIG_SLAB が有効の場合にのみ、このファイルは存在する。 カーネルキャッシュの情報。 /proc/slabinfo のフィールドは以下のとおり。
cache-name num-active-objs total-objs object-size num-active-slabs total-slabs num-pages-per-slab

 
詳細は slabinfo(5) を参照すること。
/proc/stat
カーネル/システムの統計。 アーキテクチャによって異なる。 共通エントリには以下のものが含まれる。
cpu 3357 0 4313 1362393
ユーザーモード、 低い優先度 (nice) でのユーザーモード、 システムモード、 タスク待ち (idle task)、 でそれぞれシステムが消費した時間を USER_HZ を単位として計測した積算値。 (ほとんどのアーキテクチャでは USER_HZ は 1/100 秒である。 正しい値は sysconf(_SC_CLK_TCK) を使って取得できる。) 最後の値 (タスク待ち) は疑似ファイル uptime の 2番目のエントリの値を USER_HZ 倍したものである。
 
Linux 2.6 では、この行に 3つの欄が追加されている: iowait (I/O の完了を待っていた時間; 2.5.41 以降); irq (割り込み処理を行った時間; 2.6.0-test4 以降); softirq (ソフト割り込みの処理を行った時間; 2.6.0-test4 以降)。
 
Linux 2.6.11 以降では、 8 個目の欄として steal (盗まれた時間; stolen time) が存在する。 これは、仮想化環境での動作時に他のオペレーティングシステムにより 消費された時間である。
 
Linux 2.6.24 以降では、9 個目の欄として、 guest がある。これは、 Linux カーネルの制御下のゲストオペレーティングシステムの仮想 CPU の 実行に消費された時間である。
page 5741 1808
システムが (ディスクから) ページイン/ページアウトしたページ数。
swap 1 0
スワップイン/スワップアウトされたページ数。
intr 1462898
この行はシステム起動時以降に処理された割り込みの回数を示す。 最初の欄は処理された割り込み全ての合計であり、それ以降の欄は 個々の割り込みについての合計数である。
disk_io: (2,0):(31,30,5764,1,2) (3,0):...
(メジャー番号, ディスクインデックス番号):(情報なし (noinfo), 読み込み回数, 読み込みブロック数, 書き出し回数, 書き出しブロック数)
 
(Linux 2.4 のみ)
ctxt 115315
コンテクスト・スイッチの延べ回数。
btime 769041601
起動時刻、紀元 (Epoch; 1970-01-01 00:00:00 +0000 (UTC)) からの秒数。
processes 86031
システム起動時からの延べフォーク (fork) 数。
procs_running 6
実行中状態のプロセス数 (Linux 2.5.45 以降)。
procs_blocked 2
I/O 完了待ちで停止 (blocked) しているプロセス数 (Linux 2.5.45 以降)。
/proc/swaps
使用中のスワップ領域。 swapon(8) も参照すること。
/proc/sys
このディレクトリ (1.3.57 以降に存在) はカーネル変数に対応するいくつかの ファイルとサブディレクトリを含む。 これらの変数は読み出し可能である。 また場合によっては /proc ファイルシステムや、 (非推奨の) システムコール sysctl(2) を用いて書き換えることもできる。
/proc/sys/abi (Linux 2.4.10 以降)
このディレクトリにはアプリケーションのバイナリ情報が入ったファイルが置かれる。 更に詳しい情報は、カーネルソースファイル Documentation/sysctl/abi.txt を参照すること。
/proc/sys/debug
このディレクトリは空の場合もある。
/proc/sys/dev
このディレクトリにはデバイス特有の情報 (たとえば dev/cdrom/info) が含まれる。 このディレクトリが空になっているシステムもある。
/proc/sys/fs
このディレクトリには、ファイルシステムに関連するカーネル変数用の ディレクトリとサブディレクトリが含まれる。
/proc/sys/fs/binfmt_misc
このディレクトリ以下のファイルについてのドキュメントは、 カーネルソースの Documentation/binfmt_misc.txt にある。
/proc/sys/fs/dentry-state (Linux 2.2 以降)
このファイルには、ディレクトリキャッシュ (dcache) の状態に関する情報が 入っている。ファイルには、 nr_dentry, nr_unused, age_limit (秒単位の age), want_pages (システムがリクエストしたページ数), ダミーの 2 つの値、 という 6 つの数字が書かれている。
*
nr_dentry は割り当てられた dentry (dcache エントリ) の数である。 このフィールドは Linux 2.2 では使用されない。
*
nr_unused は未使用の dentry 数である。
*
age_limit は、メモリが不足している場合に次に dcache entry を再要求できるように なるまでの残り時間 (秒数) である。
*
want_pages は、カーネルが shrink_dcache_pages() を呼び出したが dcache がまだ縮小されていない場合に、0 以外の値となる。
/proc/sys/fs/dir-notify-enable
このファイルは fcntl(2) に記述されている dnotify インターフェースをシステム全体で無効にしたり有効にしたりする。 このファイルに値 0 が書かれている場合はインターフェースが無効になり、 値 1 の場合は有効になる。
/proc/sys/fs/dquot-max
このファイルにはキャッシュされるディスク quota エントリの最大数が書かれている。 (2.4 系の) システムの中には、このファイルが存在しないものもある。 キャッシュされるディスク quota エントリの空きが非常に少なく、 とても多くのシステムユーザーが同時に存在する場合、 この制限を上げるといいかもしれない。
/proc/sys/fs/dquot-nr
このファイルには割り当てられているディスク quota のエントリ数と、 空いているディスク quota のエントリ数が書かれている。
/proc/sys/fs/epoll (Linux 2.6.28 以降)
このディレクトリには、ファイル max_user_watches がある。 これらは、 epoll インタフェースが消費するカーネルメモリ量を制限するのに使用できる。 詳細は epoll(7) を参照。
/proc/sys/fs/file-max
このファイルはシステム全体でプロセスがオープンできる ファイル数の上限を定義する。 (各プロセスがオープンできるファイル数の上限を RLIMIT_NOFILE によって設定する setrlimit(2) も参照すること。) ファイルハンドルを使い果たして大量にエラーメッセージが出る場合は、 以下のようにしてこの値を増加させてみよ:
 
 
 
    echo 100000 > /proc/sys/fs/file-max
    
 
file-max に書かれている値は、カーネル定数 NR_OPEN に制限される。
 
/proc/sys/fs/file-max を増やした場合は、 /proc/sys/fs/inode-max を新しい /proc/sys/fs/file-max の値の 3-4 倍に増やしておくこと。 こうしないと inode を使い果たしてしまうだろう。
 
特権プロセス ( CAP_SYS_ADMIN) は file-max 上限を上書きできる。
/proc/sys/fs/file-nr
(このファイルは読み出し専用で) 読み出すと 現在オープンされているファイルの数が得られる。 このファイルには、割り当てられているファイルハンドル数・ 空いているファイルハンドル数・ファイルハンドル数の最大値、 という 3 つの数値が書かれている。 カーネルはファイルハンドルを動的に割り当てるが、 それを再び解放しない。 割り当てられているファイル数が最大値に近づいた場合は、 最大値を大きくすることを考慮すべきである。 空いているファイルハンドル数が多い場合は、 ファイルハンドルの使用のピークを経験したことがあり、 最大値を大きくする必要はないだろう。
/proc/sys/fs/inode-max
このファイルには、メモリ内 inode の最大値が書かれている。 (2.4 系の) システムによっては、このファイルが存在しないかもしれない。 この値は file-max の値の 3-4 倍にすべきである。 これは stdin, stdout, ネットワークソケットを扱うにも inode が必要なためである。 日常的に inode を使い果たしている場合は、この値を増やす必要がある。
/proc/sys/fs/inode-nr
このファイルには、 inode-state の最初の 2 つの値が書かれている。
/proc/sys/fs/inode-state
このファイルには 7 個の値が書かれている: nr_inodes, nr_free_inodes, preshrink と 4 つのダミーの値である。 nr_inodes はシステムが確保する inode の数である。 Linux は 1 度に 1 ページ分いっぱいに nr_inode を確保するので、この値が inode-max より幾分大きくなることもある。 nr_free_inodes は空いている inode の数を表す。 nr_inodes > inode-max の場合、 preshrink は 0 以外の値になる。 この場合システムは inode をさらに確保するのではなく、 inode リストを切り詰める必要がある。
/proc/sys/fs/inotify (Linux 2.6.13 以降)
このディレクトリには、ファイル max_queued_events, max_user_instances, and max_user_watches がある。これらは、 inotify インタフェースが消費するカーネルメモリ量を制限するのに利用できる。 詳細は inotify(7) を参照。
/proc/sys/fs/lease-break-time
このファイルは、ファイルを保持しているプロセスに対して カーネルがシグナルを送り、 他のプロセスがそのファイルをオープンするのを待っていることを通知してから、 そのプロセスに対してカーネルがファイルのリース (lease, 貸し出し) ( fcntl(2) を参照) を許す猶予期間を指定する。 リースホルダ (lease holder: ファイルの貸し出しを受けているプロセス) が 猶予期間中にリースを削除するか階級を低くしない場合、 カーネルはファイルのリースを強制的に止める。
/proc/sys/fs/leases-enable
このファイルはシステム全体でのファイルリース ( fcntl(2) を参照) を有効または無効にする。 ファイルに値 0 が書き込まれている場合、リースは無効である。 0 以外の場合にはリースは有効である。
/proc/sys/fs/mqueue (Linux 2.6.6 以降)
このディレクトリにはファイル msg_max, msgsize_max, and queues_max がある。これらは POSIX メッセージキューで使用されるリソースの 制御を行う。 詳細は mq_overview(7) を参照。
/proc/sys/fs/overflowgid/proc/sys/fs/overflowuid
これらのファイルにより、ユーザーは固定 UID と固定 GID の値を変更できる。 デフォルトは 65534 である。 Linux の UID と GID は 32 ビットであるが、 16 ビットの UID と GID しかサポートしないファイルシステムもある。 このようなファイルシステムが書き込みを許可してマウントされた場合、 65535 を超える UID と GID は、 ディスクに書き込まれる前にオーバーフロー値に変換される。
/proc/sys/fs/pipe-max-size (Linux 2.6.35 以降)
このファイルの値により、 fcntl(2)F_SETPIPE_SZ 操作で増やすことができるパイプ容量の上限値が定義される。この上限は非特権プロセスにのみ適用される。このファイルのデフォルト値は 1,048,576 である。このファイルに設定した値は切り上げられて、実装側で利用するのに都合のよい値に変更される場合がある。切り上げられた値を確認するには、値を設定した後でこのファイルの内容を表示すればよい。このファイルに設定できる最小値はシステムのページサイズである。
/proc/sys/fs/suid_dumpable (Linux 2.6.13 以降)
このファイルの値により、set-user-ID されたバイナリや、 保護がかかった (protected) バイナリ / tainted な (汚染された; ライセンスがカーネルと適合しない) バイナリに対して、コアダンプファイルを 生成するかどうかが決定される。 以下の 3つの値を指定することができる:
 
0 (default) この値を指定すると、以前と同じ (Linux 2.6.13 より前の) 動作をする。 ( seteuid(2), setgid(2) などを呼び出すことや、set-user-ID や set-group-ID されたプログラムを 実行することで) 資格情報 (credentials) が変更されているプロセスや、 プロセスの実行バイナリの読み出し許可がないプロセスに対して、 コアダンプを生成しない。
 
1 ("debug") すべてのプロセスで、可能であればコアダンプを行う。 コアダンプファイルの所有者は、ダンプを行うプロセスのファイルシステム UID となり、セキュリティ上の考慮は行われない。 この値は、システムデバッグの場面だけを想定して設けられている。 ptrace のチェックも行われない。
 
2 ("suidsafe") 通常はダンプされないようなバイナリ (上記の "0" 参照) を root だけが読み出し可能な形でダンプする。 この場合、ユーザはそのコアダンプファイルを削除することはできるが、 読むことはできない。 セキュリティ上の理由から、このモードのコアダンプでは、 既存のダンプファイルや他のファイルを上書きすることはない。 このモードは、管理者が通常の環境で問題を解析しようとする際に 適している。
このファイルはスーパブロックの値を制御する。
この値はカーネルがマウントできるファイルシステムの最大値になる。 現在、 super-max で許可されているファイルシステム数以上に マウントする必要がある場合は、この値を増加させるだけでよい。
/proc/sys/fs/super-nr
このファイルには現在マウントされているファイルシステム数が書かれている。
/proc/sys/kernel
このディレクトリには、以下で説明する様々なカーネルパラメータを 制御するためのファイルが配置されている。
/proc/sys/kernel/acct
このファイルには 3 つの値が含まれている: highwater, lowwater, frequency である。 BSD-style process accounting が有効になっている場合、 これら 3 つの値が動作を制御する。 ログファイルのあるファイルシステムの空き領域が lowwater パーセント以下になった場合は、ログ記録を一時停止する。 空き領域が highwater パーセント以上になった場合に、ログ記録を再開する。 frequency はカーネルが空き領域のチェックをする頻度である (単位は秒)。 デフォルトの値は、4, 2, 30 である。 つまり、空き領域が 2% 以下になるとログ記録を一時停止し、 空き領域が 4% 以上となったときに再開する。 空き領域についての情報は 30 秒間有効である点に注意すること。
/proc/sys/kernel/cap-bound (Linux 2.2 to 2.6.24 以降)
/proc/sys/kernel/cap-bound このファイルにはカーネルの capability bounding set (符号付き 10 進数表現) の値が書かれている。 execve(2) 中は、このセットとプロセスに許可されている権限の AND がとられる。 Linux 2.6.25 以降では、システム全体のケーパビリティバウンディングセットは なくなり、スレッド単位のバウンディングセットに置き換えられた。 capabilities(7) を参照。
/proc/sys/kernel/core_pattern
core(5) 参照。
/proc/sys/kernel/core_uses_pid
core(5) 参照。
/proc/sys/kernel/ctrl-alt-del
このファイルはキーボードの Ctrl-Alt-Del の扱いを制御する。 このファイルにある値が 0 の場合、 Ctrl-Alt-Del が捕捉されると init(8) プログラムに送られて、正しく再起動される。 値が 0 より大きい場合、Vulcan Nerve Pinch (tm) に反応して、 Linux はダーティバッファを同期させることなく、すぐに再起動を行う。 注意: プログラム (dosemu など) に "raw" モードのキーボードがある場合、 ctrl-alt-del はカーネルの tty レイヤーに到達する前に プログラムに遮断され、 プログラムに送られてどのように扱うかが決められる。
/proc/sys/kernel/hotplug
このファイルはホットプラグ・ポリシー・エージェントのパスが書かれている。 このファイルのデフォルト値は /sbin/hotplug である。
/proc/sys/kernel/domainname/proc/sys/kernel/hostname
これらのファイルは、コマンド domainname(1), hostname(1) と全く同じ方法で、 マシンの NIS/YP ドメイン名とホスト名の設定に使える。 すなわち
 

#  echo 'darkstar' > /proc/sys/kernel/hostname
#  echo 'mydomain' > /proc/sys/kernel/domainname
    

 
は、以下と同じ効果がある。
 

#  hostname 'darkstar'
#  domainname 'mydomain'
    

 
注意: 典型的な darkstar.frop.org という名前には、 ホスト名 "darkstar" と DNS (Internet Domain Name Server) ドメイン名 "frop.org" が含まれているが、DNS ドメイン名と NIS (Network Information Service) または YP (Yellow Pages) のドメイン名を混同してはならない。 一般にこれら 2 つのドメイン名は異なる。 詳細な議論は、 hostname(1) の man ページを参照すること。
/proc/sys/kernel/htab-reclaim
(PowerPC のみ) このファイルを 0 以外の値に設定すると、 PowerPC htab (カーネルソースファイル Documentation/powerpc/ppc_htab.txt 参照) を、システムがアイドルループになるたびに切り詰める。
/proc/sys/kernel/l2cr
(PowerPC のみ) このファイルには G3 プロセッサボードの L2 キャッシュを制御するフラグが含まれる。 0 の場合、キャッシュは無効になる。 0 以外の場合は有効になる。
/proc/sys/kernel/modprobe
このファイルには、カーネルモジュールローダへのパスが含まれる。 デフォルトの値は /sbin/modprobe である。このファイルは、 CONFIG_KMOD オプションを有効にしてカーネルが作成されている場合にのみ存在する。 このファイルについては、カーネルソースファイル Documentation/kmod.txt (カーネル 2.4 以前のみに存在) に記述されている。
/proc/sys/kernel/msgmax
このファイルは、System V メッセージキューに書き込まれる 1 つのメッセージの 最大バイト数を、システム全体で制限する。
/proc/sys/kernel/msgmni
このファイルはメッセージキュー識別子の最大数をシステム全体で制限する。 (このファイルは Linux 2.4 以降にしか存在しない)。
/proc/sys/kernel/msgmnb
このファイルは、 msg_qbytes の設定を初期化するシステム全体のパラメータで ある。 msg_qbytes は以降で作成されるメッセージキューで使われる。 msg_qbytes 設定では、メッセージキューに書き込まれる最大バイト数を指定する。
/proc/sys/kernel/ostype/proc/sys/kernel/osrelease
これらのファイルは文字列 /proc/version の各部分を与える。
/proc/sys/kernel/overflowgid/proc/sys/kernel/overflowuid
これらのファイルは /proc/sys/fs/overflowgid/proc/sys/fs/overflowuid を複製したものである。
/proc/sys/kernel/panic
このファイルはカーネル変数 panic_timeout への読み出しと書き込みのアクセスを与える。 この値が 0 ならば、パニック時にカーネルは (無限) ループに入る。 0 でなければ、その秒数だけ待ってから自動的に再起動する。 ソフトウェア watchdog ドライバを使っている場合、 推奨される設定は 60 である。
/proc/sys/kernel/panic_on_oops (Linux 2.5.68 以降)
このファイルは、oops や BUG が起こった場合のカーネルの動作を制御する。 ファイルに 0 が書かれている場合、システムは操作を続行しようとする。 1 が書かれている場合、システムは (klogd が oops 出力を記録する時間を与えるために) 数秒間遅延した後、 panic を起こす。 /proc/sys/kernel/panic ファイルも 0 でない場合、マシンは再起動される。
/proc/sys/kernel/pid_max (Linux 2.5.34 以降)
このファイルは、PID をいくつで終了にするかを指定する (すなわち、このファイルの値は最大 PID より 1 大きい)。 このファイルのデフォルト値は 32768 であり、 その場合には以前のカーネルと同じ PID の範囲になる。 32ビットのプラットフォームでは、 pid_max の最大値は 32768 である。 64ビットのプラットフォームでは、 2^22 ( PID_MAX_LIMIT, 約 4,000,000) までの任意の値を設定できる。
/proc/sys/kernel/powersave-nap (PowerPC のみ)
このファイルにはフラグが書かれている。 フラグが設定されると、Linux-PPC は 省電力の "nap" モードを使う。 設定されない場合は、"doze" モードが使われる。
/proc/sys/kernel/printk
このファイルにある 4 つの値は、 console_loglevel, default_message_loglevel, minimum_console_loglevel, default_console_loglevel である。 これらの値はエラーメッセージを表示したり記録したりする printk() の動作に影響する。 各 loglevel の情報については、 syslog(2) を参照すること。 優先度が console_loglevel 以上のメッセージは、コンソールに表示される。 優先度が明示されていないメッセージは、優先度が default_message_level のときに表示される。 minimum_console_loglevelconsole_loglevel に設定できる最小 (最高) の値である。 default_console_loglevelconsole_loglevel のデフォルトの値である。
/proc/sys/kernel/pty (Linux 2.6.4 以降)
このディレクトリは、UNIX 98 疑似端末 ( pts(4) を参照) の数に関連する 2 つのファイルを含む。
/proc/sys/kernel/pty/max
このファイルは疑似端末の最大数を定義する。
/proc/sys/kernel/pty/nr
この読み出し専用のファイルは、現在いくつの疑似端末が使われているかを表す。
/proc/sys/kernel/random
このディレクトリは、ファイル /dev/random の操作を制御する様々なパラメータが書かれている。 詳細は random(4) を参照。
/proc/sys/kernel/real-root-dev
このファイルはカーネルソースファイル Documentation/initrd.txt に記述されている。
/proc/sys/kernel/reboot-cmd (Sparc のみ)
このファイルは SPARC ROM/Flash ブートローダに引き数を渡す方法を 提供しているように思われる。 再起動後に何をするかを指定しているのだろうか?
/proc/sys/kernel/rtsig-max
(2.6.7 までのカーネルにのみ存在する。 setrlimit(2) を参照すること) このファイルはシステムで発行される POSIX real-time (queued) signal の 最大数を調整するのに使用される。
/proc/sys/kernel/rtsig-nr
(2.6.7 までのカーネルにのみ存在する) このファイルは現在キューに入っている POSIX real-time signal の数を表す。
/proc/sys/kernel/sem (Linux 2.4 以降)
このファイルには System V IPC セマフォを制限する 4 つの値が書かれている。 これらのフィールドは次の順番に並んでいる:
SEMMSL
セマフォ集合ごとのセマフォ数の最大値。
SEMMNS
システム全体での、全てのセマフォ集合におけるセマフォ数の制限。
SEMOPM
semop(2) コールに指定されるオペレーション数の最大値。
SEMMNI
システム全体でのセマフォ識別子の最大値。
/proc/sys/kernel/sg-big-buff
このファイルは、汎用 SCSI デバイス (sg) のバッファサイズの最大値を表す。 今はこれを変更することはできないが、 コンパイル時に include/scsi/sg.h を編集して SG_BIG_BUFF の値を変えれば変更できる。 ただし、この値を変更する理由はないだろう。
/proc/sys/kernel/shmall
このファイルには System V 共有メモリの総ページ数の システム全体での制限が書かれている。
/proc/sys/kernel/shmmax
このファイルを通じて、(System V IPC) 共有メモリセグメントを作成するときの 最大サイズの実行時上限 (run-time limit) を取得または設定できる。 現在は 1GB までの共有メモリセグメントが カーネルでサポートされている。 この値のデフォルトは SHMMAX である。
/proc/sys/kernel/shmmni
(Linux 2.4 以降で使用可能) このファイルは、システム全体で作成可能な System V 共有メモリセグメント数を指定する。
/proc/sys/kernel/sysrq
このファイルは、SysRq キーにより起動が許可されている関数群を制御する ものである。デフォルトでは、ファイルの内容は 1 であり、 これは起こり得る全ての SysRq リクエストが許可されることを意味する (古いバージョンのカーネルでは、SysRq はデフォルトでは無効になっており、 実行時に明示的に有効にする必要があったが、今はそうではない)。 このファイルで指定可能な値は以下の通り。
 

0 - sysrq を完全に無効にする
1 - sysrq の全ての関数を有効にする
>1 - 許可する sysrq 関数のビットマスク。内訳は以下の通り。
2 - コンソールのログ・レベルの制御を有効にする
4 - キーボードの制御を有効にする (SAK, unraw)
8 - プロセスなどのデバッグ・ダンプを有効にする
16 - sync コマンドを有効にする
32 - 読み出し専用での再マウントを有効にする
64 - プロセスへのシグナル発行を有効にする (term, kill, oom-kill)
128 - リブート/電源オフを許可する
256 - 全てのリアルタイム・タスクの nice 値の変更を許可する
 
カーネル設定オプション CONFIG_MAGIC_SYSRQ が有効な場合のみ、このファイルは存在する。 詳細は、カーネルソースファイル Documentation/sysrq.txt を参照のこと。
/proc/sys/kernel/version
このファイルには、以下のような文字列が書かれている:
 

#5 Wed Feb 25 21:49:24 MET 1998
 
"#5" はこのソースで構築された 5 番目のカーネルであることを意味する。 その後にある日付はカーネルが構築された時刻を表す。
/proc/sys/kernel/threads-max (Linux 2.3.11 以降)
このファイルは、システム全体で作成可能なスレッド数 (タスク数) の上限を指定する。
/proc/sys/kernel/zero-paged (PowerPC のみ)
このファイルはフラグを含む。 (0 以外の値で) 有効された場合、Linux-PPC はアイドルループで pre-zero page を行うので、get_free_pages の速度が向上する可能性がある。
/proc/sys/net
このディレクトリにはネットワーク関係の情報が入っている。 このディレクトリにあるファイルのいくつかについては、 tcp(7)ip(7) に説明がある。
/proc/sys/net/core/somaxconn
このファイルは listen(2)backlog 引き数の上限値を規定する。 詳細は listen(2) のマニュアルページを参照。
/proc/sys/proc
このディレクトリは空の場合もある。
/proc/sys/sunrpc
このディレクトリはネットワークファイルシステム (NFS) への Sun remote procedure call (遠隔手続き呼び出し) をサポートする。 これが存在しないシステムもある。
/proc/sys/vm
このディレクトリにはメモリ管理の調整、バッファやキャッシュ管理のための ファイルがある。
/proc/sys/vm/drop_caches (Linux 2.6.16 以降)
このファイルに書き込みを行うことで、クリーンなキャッシュ、dentry、 inode をメモリ上から外し、そのメモリを解放する。
 
ページキャッシュを解放するには、 echo 1 > /proc/sys/vm/drop_caches とする。 dentry、inode を解放するには、 echo 2 > /proc/sys/vm/drop_caches とする。ページキャッシュ、dentry、inode を解放するには、 echo 3 > /proc/sys/vm/drop_caches とする。
 
この操作は非破壊的な操作で、ダーティな (dirty) オブジェクトは 解放されないので、この操作を行う際は最初に sync(8) を実行しておくべきである。
/proc/sys/vm/legacy_va_layout (Linux 2.6.9 以降)
0 以外の場合、新しい 32ビットメモリマッピング配置が無効になり、 カーネルは全てのプロセスに対して従来の (カーネル 2.4 の) 配置方法を 使用する。
/proc/sys/vm/memory_failure_early_kill (Linux 2.6.32 以降)
このファイルは、カーネルが処理できない訂正不能なメモリエラー (通常はメモリモジュールでの 2 ビットエラー) がバックグラウンドでハードウェアにより検出された際に、プロセスをどのように kill するかを制御する。 (ページの有効なコピーがディスク上にも存在するなど) いくつかの場面では、カーネルはアプリケーションに影響を与えずに透過的に故障を処理する。しかし、データの最新のコピーが他にはない場合には、データ破壊が波及するのを防ぐため、カーネルはプロセスを kill する。
 
このファイルは以下のいずれかの値を持つ。
1:
データ破壊が検出されるとすぐに、故障が検出され復元できないページ (corrupted-and-not-reloadable page) をマップしている全てのプロセスを kill する。この機能は、(カーネル内部で割り当てられたデータやスワップのキャッシュなど) 少数のいくつかのタイプのページではサポートされていないが、大半のユーザページではこの機能は働く。
0:
データ破壊が検出されたページの全てのプロセスからの unmap のみを行い、そのページにアクセスしようとしたプロセスのみを kill する。
この kill は si_codeBUS_MCEERR_AO を設定した SIGBUS シグナルを使って行われる。プロセス側では必要であればこのシグナルを処理することができる。詳細は sigaction(2) を参照。
 
この機能は、高度なマシンチェック機構を持ったアーキテクチャ/プラットフォームにおいてのみ有効であり、ハードウェア機能にも依存している。
 
アプリケーションは prctl(2)PR_MCE_KILL 操作を使って個別に memory_failure_early_kill の設定を上書きすることができる。
カーネルの設定で CONFIG_MEMORY_FAILURE が有効になっている場合にのみ 存在する。
/proc/sys/vm/memory_failure_recovery (Linux 2.6.32 以降)
メモリ故障回復 (memory failure recovery) を有効にする
(プラットフォームがサポートしている場合)
1:
回復を試みる。
0:
メモリ故障時には常に panic を起こす。
カーネルの設定で CONFIG_MEMORY_FAILURE が有効になっている場合にのみ 存在する。
/proc/sys/vm/oom_dump_tasks (Linux 2.6.25 以降)
カーネルが OOM-killing を実行する際に、システム全体のタスク・ダンプ (カーネルスレッドを除く) を生成するかを制御する。 ダンプには、タスク (スレッド、プロセス) 毎に以下の情報が出力される: スレッド ID、実ユーザ ID、スレッドグループ ID (プロセス ID)、 仮想メモリサイズ、Resident Set Size (実メモリ上に存在するページサイズ)、 タスクがスケジューリングされた CPU、 oom_adj スコア ( /proc/[pid]/oom_adj の説明を参照)、コマンド名。 このダンプ情報は、なぜ OOM-killer が起動されたかを知り、 その原因となったならず者のタスクを特定するのに役に立つ。
 
このファイルの内容が値 0 の場合、ダンプ情報の出力は行われない。 タスクが何千もある非常に巨大なシステムでは、 各々のタスクについてメモリ状態をダンプするのは適切でないかもしれない。 そのようなシステムでは、ダンプ情報が必要でもないときに メモリ不足 (OOM) の状況で性能面の不利益が起こらないようにすべきだろう。
 
このファイルの内容が 0 以外の場合、 OOM-killer が実際にメモリを占有したタスクを kill する度に ダンプ情報が出力される。
 
デフォルト値は 0 である。
/proc/sys/vm/oom_kill_allocating_task (Linux 2.6.24 以降)
このファイルは、メモリ不足 (OOM) の状況が起こった際に、 メモリ不足のきっかけとなったタスクを kill するかどうかを制御する。
 
このファイルが 0 に設定された場合、 OOM-killer はタスクリスト全体をスキャンし、経験則に基づき kill するタスクを選択する。 通常は、kill した場合に多くのメモリが解放できる、 ならず者のメモリ占有タスクが選択される。
 
このファイルが 0 以外に設定された場合、 OOM-killer はメモリ不足の状況が発生するきっかけとなったタスクを 単純に kill するだけである。 これにより、たいていは重い処理となるタスクリストのスキャンを回避できる。
 
/proc/sys/vm/panic_on_oom が 0 以外の場合、 /proc/sys/vm/oom_kill_allocating_task にどのような値が入っていたとしても、 /proc/sys/vm/panic_on_oom の方が優先される。
 
デフォルト値は 0 である。
/proc/sys/vm/overcommit_memory
このファイルにはカーネル仮想メモリのアカウントモードが書かれている。 値は以下の通り:
0: 発見的なオーバーコミット (heuristic overcommit) (これがデフォルトである)
 
1: 常にオーバーコミットし、チェックしない。
 
2: 常にチェックし、オーバーコミットしない。
モード 0 では、 MAP_NORESERVE を設定して呼び出された mmap(2) はチェックされない。 またデフォルトのチェックはとても脆弱で、 プロセスを "OOM-kill" してしまうリスクを引き起こす。 Linux 2.4 では 0 以外の値はモード 1 を意味する。 (Linux 2.6 以降で利用可能な) モード 2 では、 システム上の仮想アドレス空間の合計が (SS + RAM*(r/100)) に制限されている。 ここで、SS はスワップ空間のサイズ、 RAM は物理メモリのサイズ、r はファイル /proc/sys/vm/overcommit_ratio の内容である。
/proc/sys/vm/overcommit_ratio
/proc/sys/vm/overcommit_memory の説明を参照すること。
/proc/sys/vm/panic_on_oom (Linux 2.6.18 以降)
このファイルは、メモリ不足時にカーネルパニックを 起こすか起こさないかを制御する。
 
このファイルに値 0 を設定すると、 カーネルの OOM-killer がならず者のプロセスを kill する。 普通は、OOM-killer がならず者のプロセスを kill することができ、 システムは何とか動き続けることができる。
 
このファイルに値 1 を設定すると、 メモリ不足の状況が発生すると、カーネルは普通はパニックする。 しかしながら、プロセスが メモリポリシー ( mbind(2)MPOL_BIND) や cpusets (cpuset(7)) を使って特定のノードへのメモリ割り当てを制限していて、 それらのノードでメモリ枯渇状態に至った場合は、 一つのプロセスが OOM-killer により kill されるだけかもしれない。 この場合には、カーネルパニックは発生しない。 なぜなら、他のノードのメモリには空きがあるかもしれず、 したがって、システム全体としてはメモリ不足の状況にまだ達していないかも しれないからである。
 
このファイルに値 2 を設定すると、 メモリ不足の状況が発生するとカーネルは常にパニックを起こす。
 
デフォルト値は 0 である。 1 と 2 はクラスタリングのフェイルオーバー用である。 フェイルオーバーの方針に応じてどちらかの値を選択すること。
/proc/sys/vm/swappiness
このファイルの値により、カーネルがどの程度激しくメモリページの スワップを行う かが制御される。 大きな値ほどスワップが激しくなり、小さい値ほど激しくなくなる。 デフォルト値は 60 である。
/proc/sysrq-trigger (Linux 2.4.21 以降)
このファイルに文字 character を書き込むと、 キーボードから ALT-SysRq-<character> を入力した場合と 同じ SysRq 関数が起動される ( /proc/sys/kernel/sysrq の説明を参照)。 通常、このファイルへ書き込みができるのは root だけである。詳細については、カーネルソースファイルの Documentation/sysrq.txt を参照のこと。
/proc/sysvipc
疑似ファイル msg, sem, shm を含むサブディレクトリ。 これらのファイルは、現在システム上に存在する System V プロセス間通信 (Interprocess Communication, IPC) オブジェクト (それぞれ: メッセージキュー、セマフォ、共有メモリ) のリストであり、 ipcs(1) で取得できる情報と同じものを提供する。 これらのファイルにはヘッダがあり、理解しやすいように (1 行につき 1 個の IPC オブジェクトの形式で) フォーマットされている。 svipc(7) にはこれらのファイルから分かる情報の詳細な背景が書かれている。
/proc/tty
疑似ファイルを含むサブディレクトリ。 tty ドライバとライン設定 (line discipline) の書かれた サブディレクトリも含まれる。
/proc/uptime
このファイルは システム起動時から経過した時間 (秒) と アイドル (idle) しているプロセスが消費した時間 (秒) の 2 つの数を含む。
/proc/version
現在稼働しているカーネルのバージョン識別子である文字列。 これには /proc/sys/ostype, /proc/sys/osrelease, /proc/sys/version の内容が含まれる。 たとえばこのように:

Linux version 1.0.9 (quinlan@phaze) #1 Sat May 14 01:51:54 EDT 1994
/proc/vmstat (Linux 2.6 以降)
このファイルは仮想メモリの様々な統計情報を表示する。
/proc/zoneinfo (Linux 2.6.13 以降)
このファイルはメモリのゾーン (memory zone) に関する情報を表示する。 仮想メモリの振舞いを分析するのに役立つ。

注意

ほとんどの文字列 (たとえば環境変数やコマンド行) は内部表現のままなので、 各フィールドは NULL バイト ('\0') で区切られている。だから、 od -ctr "\000" "\n" を使えば、それらはより読みやすくなる。 また echo `cat <file>` でもよい。
 
このマニュアルは不完全であり、たぶん不正確で、しばしば更新される必要がある。

関連項目

cat(1), dmesg(1), find(1), free(1), ps(1), tr(1), uptime(1), chroot(2), mmap(2), readlink(2), syslog(2), slabinfo(5), hier(7), time(7), arp(8), hdparm(8), ifconfig(8), init(8), lsmod(8), lspci(8), mount(8), netstat(8), procinfo(8), route(8)
 
カーネルのソースファイル: Documentation/filesystems/proc.txt, Documentation/sysctl/vm.txt

この文書について

この man ページは Linux man-pages プロジェクトのリリース 3.41 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。
2012-05-03 Linux