- /proc/[number]
-
実行中のプロセスについてのサブディレクトリ。
サブディレクトリ名は (そのプロセスの) プロセス ID である。
各サブディレクトリは、以下の擬似ファイルとディレクトリを含む。
- /proc/[number]/auxv (カーネル 2.6.0-test7 以降)
-
実行時にプロセスに渡された ELF インタプリタ情報が格納されている。
個々のエントリは、unsigned long 型の ID 1個に
unsigned long 型の値 1個が続くフォーマットである。
最後のエントリには 0 が 2個入っている。
- /proc/[number]/cmdline
-
プロセスの完全なコマンド行を保持している。
ただし現在スワップアウトされているプロセスやゾンビプロセスの場合は、
このファイルは何も含んでいない。
すなわち、このファイルを読み出しても一文字も返らない。
このファイルではコマンドライン引き数が、
ヌル文字で区切られた文字列として書かれており、
最後の文字列の後にもヌル文字のバイトが続く。
- /proc/[number]/cwd
-
プロセスのカレントワーキングディレクトリへのシンボリックリンク。
プロセス 20 の cwd を見つけるためには、たとえば次のようにすればよい。
cd /proc/20/cwd; /bin/pwd
pwd
コマンドはシェルの内部コマンドのことがよくあり、
うまく動作しないかもしれない。
bash では pwd -P を使ってもよい。
マルチスレッドプロセスでは、メインスレッドがすでに終了している場合、
このシンボリックリンクの内容は参照できない
(スレッドの終了は通常
pthread_exit(3)
を呼び出しにより行われる)。
- /proc/[number]/environ
-
このファイルはプロセスの環境変数を含んでいる。
各エントリは NULL バイト ('\0') で区切られていて、
末尾に NULL バイトがあるかもしれない。
したがって、プロセス 1 の環境変数を表示するためには
次のようにすればよい。
(cat /proc/1/environ; echo) | tr "\000" "\n"
(これが何の役に立つのかについては
lilo(8)
を見よ)。
- /proc/[number]/exe
-
Linux 2.2 以降では、このファイルはシンボリックリンクで、
実行可能コマンドの実際のパス名を格納している。
このシンボリックリンクは通常のように辿ることができる;
これをオープンすると実行可能ファイルがオープンされる。
(コマンドラインで)
/proc/[number]/exe
と入力すると、プロセス番号 [number] で実行されている
実行可能ファイルをもう一つ実行することができる。
マルチスレッドプロセスでは、メインスレッドがすでに終了している場合、
このシンボリックリンクの内容は参照できない
(スレッドの終了は通常
pthread_exit(3)
を呼び出しにより行われる)。
Linux 2.0 以前では、
/proc/[number]/exe
は実行されたバイナリへのポインタで、シンボリックリンクのように見える。
Linux 2.0 以前では、このファイルに対して
readlink(2)
を実行すると、
[デバイス番号]:iノード番号
というフォーマットの文字列が返る。
たとえば、[0301]:1502 はメジャーデバイス番号 03 (IDE, MFM などのドライブ)
マイナーデバイス番号 01 (最初のドライブの最初のパーティション) の
デバイス上の iノード番号 1502 である。
-inum オプションをつけて
find(1)
を使うと、このファイルの所在を探すことができる。
- /proc/[number]/fd
-
プロセスがオープンしたファイル各々に対するエントリを含むサブディレクトリ。
ファイルディスクリプタがファイル名で、
実際のファイルへのシンボリックリンクになっている。
したがって 0 は標準入力、1 は標準出力、2 は標準エラー出力、などとなる。
マルチスレッドプロセスでは、メインスレッドがすでに終了している場合、
このディレクトリの内容は参照できない
(スレッドの終了は通常
pthread_exit(3)
を呼び出しにより行われる)。
標準入出力を用いず、引き数として受け取った
ファイル名に対して入力、出力を行うようなプログラムは、
以下のようにすれば実質的にフィルタプログラムとして用いることができる。
ここで -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 へのシンボリックリンクにしている。
- /proc/[number]/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
[訳注: 初期化しない (0 に値が設定される) 大域変数が割り当てられる領域]
などのように、このメモリ領域にはどの i ノードも割り当てられていないことを
意味している。
Linux 2.0 ではパス名を書いたフィールドがない。
- /proc/[number]/mem
-
このファイルは、
open(2),
read(2),
lseek(2)
を通して、プロセスのメモリのページにアクセスするために使われる。
- /proc/[number]/root
-
Unix と Linux では、
ファイルシステムのルート (/) をプロセスごとに別々にできる。
これはシステムコール
chroot(2)
によって設定する。
このファイルはプロセスのルートディレクトリを指すシンボリックリンクで、
exe や fd/* などと同じような動作をする。
マルチスレッドプロセスでは、メインスレッドがすでに終了している場合、
このシンボリックリンクの内容は参照できない
(スレッドの終了は通常
pthread_exit(3)
を呼び出しにより行われる)。
- /proc/[number]/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/[number]/maps
で表示されるマッピングと同じ情報が表示される。
残りの行には、マッピングのサイズ、現在 RAM 上に存在するマッピングの量、
マッピング内の共有ページのうちクリーンなページ数、ダーティなページ数、
マッピング内のプライベートページのうちクリーンなページ数、
ダーティなページ数、を示す。
このファイルが存在するのは、カーネルのコンフィギュレーション・オプション
CONFIG_MMU
を有効にした場合だけである。
- /proc/[number]/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
プロセスの接続している端末名。
- tpgid %d
-
プロセスが接続している端末を所有しているプロセスの、プロセスグループ ID。
- flags %u プロセスのカーネルフラグワード。
-
ビットの意味は、
<linux/sched.h>
で定義されている PF_* を参照すること。
詳細はカーネルのバージョンに依存する。
- minflt %lu
-
プロセスが引き起こしたマイナーフォールト (minor fault、ディスクから
メモリページへのロードを必要としないフォールト) の回数。
- cminflt %lu
-
(そのプロセスが終了を待っている)
子プロセスが引き起こしたマイナーフォールトの回数。
- majflt %lu
-
プロセスが引き起こしたメジャーフォールト (major fault、ディスクから
メモリページへのロードを必要とするフォールト) の回数。
- cmajflt %lu
-
(そのプロセスが終了を待っている)
子プロセスが引き起こしたメジャーフォールトの回数。
- utime %lu
-
プロセスのユーザーモードでの実行時間 (単位 jiffies [訳注: 1/100秒単位])。
- stime %lu
-
プロセスのカーネルモードでの実行時間 (単位 jiffies)。
- cutime %ld
-
(そのプロセスが終了を待っている)
子プロセスのユーザーモードでの実行時間 (単位 jiffies)。
(times(2)
も参照すること。)
- cstime %ld
-
(そのプロセスが終了を待っている)
子プロセスのカーネルモードでの実行時間 (単位 jiffies)。
- priority %ld
-
標準的な nice 値に 15 を加えた値。
この値はカーネル内では決して負にならない。
- nice %ld
-
19 (最優先) から -19 (他の全てより優先度が低い) の範囲の nice 値。
-
-
num_threads %ld
このプロセスのスレッド数 (カーネル 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。プロセスが持っている実メモリ上のページ数。
管理用に使われるページ数である 3 を減算した値である。
これはちょうどテキスト、データ、スタック空間に使われているページ数である。
デマンドロードされていないページや
スワップアウトされたページの数は含んでいない。
- rlim %lu
-
現在の rss の上限 (通常 i386 では 4294967295)。単位はバイト (byte)。
- startcode %lu
-
プログラムテキストが実行可能であるような領域の先頭アドレス。
- endcode %lu
-
プログラムテキストが実行可能であるような領域の末尾アドレス。
- startstack %lu
-
スタックの開始アドレス。
- kstkesp %lu
-
現在の ESP (スタックポインタ) の値。
プロセスのカーネルスタックページにある。
- kstkeip %lu
-
現在の EIP (インストラクションポインタ) の値。
- signal %lu
-
待機中のシグナルのビットマップ。
- blocked %lu
-
ブロックされた (blocked) シグナルのビットマップ。
- sigignore %lu
-
無視された (ignored) シグナルのビットマップ。
- sigcatch %lu
-
キャッチされた (caught) シグナルのビットマップ。
- wchan %lu
-
プロセスが待っている「チャネル」。
これはシステムコールのアドレスであり、文字名が必要ならば
(アドレスとシステムコール名との) 対応表から見つけられる
(もし /etc/psdatabase [訳注: このファイル名はパッケージによる] を
更新しているならば、ps -l して WCHAN フィールドを見よ)。
- nswap %lu
-
スワップされたページ数 (メンテナンスされていない)。
- cnswap %lu
-
子プロセスの nswap の累計 (メンテナンスされていない)。
- exit_signal %d (カーネル 2.1.22 以降)
-
プロセスが死んだときに親プロセスに送られるシグナル。
- processor %d (カーネル 2.2.8 以降)
-
このプロセスを最後に実行した CPU の番号。
- rt_priority %lu (カーネル 2.5.19 以降)
-
リアルタイム・スケジューリングの優先度
(sched_setscheduler(2)
参照)。
- policy %lu (カーネル 2.5.19 以降)
-
スケジューリング・ポリシー
(sched_setscheduler(2)
参照)。
- delayacct_blkio_ticks %llu (カーネル 2.6.18 以降)
-
(clock tick (100分の1秒) 単位での) ブロック I/O の総遅延量。
- /proc/[number]/statm
-
ページ中のメモリ状態についての情報を提供する。
各フィールドは次の通り。
size プログラムサイズの総計
resident 実メモリ上に存在するページ
share 共有ページ
text テキスト (コード)
lib ライブラリ
data データ/スタック
dt ダーティページ (Linux 2.6 では使用されていない)
- /proc/[number]/status
-
/proc/[number]/stat
と
/proc/[number]/statm
にある多くの情報を、人間が解析しやすい形式で提供する。
- /proc/[number]/task (カーネル 2.6.0-test6 以降)
-
このディレクトリには、そのプロセスのスレッド情報を含む
サブディレクトリが 1 スレッドにつき 1 つ置かれる。
各サブディレクトリの名前はスレッドのスレッド ID を示す数字である
(gettid(2)
を参照)。
これらの各サブディレクトリには、
/proc/[number]
ディレクトリ以下と同じ名前と内容のファイル群がある。
すべてのスレッドで共有される属性の場合、
task/[thread-ID]
サブディレクトリ以下の各ファイルの内容は
親ディレクトリ
/proc/[number]
の対応するファイルと同じになることだろう
(例えば、マルチスレッド・プロセスではファイル
task/[thread-ID]/cwd
はいずれも親ディレクトリ内の
/proc/[number]/cwd
と同じ値を持つことになる。なぜなら、一つのプロセスに属すすべての
スレッドは作業ディレクトリを共有するからである)。
スレッド毎に独立な属性の場合、
task/[thread-ID]
サブディレクトリ以下の各ファイルは異なる値を持つことがある
(例えば、ファイル
task/[thread-ID]/status
はスレッド毎に異なる値を持つ可能性がある)。
マルチスレッドプロセスでは、メインスレッドがすでに終了している場合、
/proc/[number]/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(1)
のようなブートマネージャを使って行われる。
- /proc/cpuinfo
-
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
-
カーネルが対応しているファイルシステムのテキスト形式のリスト。
カーネルに組み込まれてコンパイルされたファイルシステムと、
カーネルモジュールが現在ロードされているファイルシステムが列挙される
(fs(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
-
(すくなくとも) i386 アーキテクチャでは
IRQ ごとの割り込み回数の記録に使われる。
簡単に読むことのできるフォーマットで、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(8)
によって表示される。
- /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 つの数値から構成される。
この数値のうち最初のものは、現在実行されている
カーネルスケジュールエンティティ (プロセス、スレッド) の数である。
この数値は CPU の数以下になる。
スラッシュの後の数値は、現在システム上に存在する
カーネルスケジュールエンティティの数である。
5 番目のフィールドはシステム上に最も最近生成されたプロセスの PID である。
- /proc/locks
-
このファイルは現在のファイルロック
(flock(2) と fcntl(2))
とリース
(fcntl(2))
を表示する。
- /proc/malloc (Linux 2.2 以前のみ)
-
コンパイルのときに
CONFIGDEBUGMALLOC
が定義されているときのみ、このファイルは存在する。
- /proc/meminfo
-
このファイルは
free(1)
によってシステムの未使用および使用中のメモリ量 (物理メモリとスワップ) と、
カーネルに使われている共有メモリとバッファの情報を報告するために使われる。
KB の代わりにバイト (byte) を使うことを除けば
free(1)
と同じフォーマットである。
- /proc/mounts
-
現在システムにマウントされている全てのファイルシステムのリスト。
このファイルのフォーマットは
fstab(5)
に記述されている。
カーネル 2.6.15 以降では、このファイルをポーリングすることができる。
このファイルを読み出し用にオープンした後では、このファイルに変更が
生じると (つまり、ファイルシステムのマウントやアンマウントがあると)、
select(2)
はそのファイルディスクリプタが読み出し可能だとマークをつけ、
poll(2)
と
epoll_wait(2)
はそのファイルがエラー状態になっているとマークをつける。
- /proc/modules
-
現在システムにロードされているモジュールのテキスト形式のリスト。
lsmod(8)
も参照すること。
- /proc/mtrr
-
Memory Type Range Registers。
詳細は
/usr/src/linux/Documentation/mtrr.txt
を参照すること。
- /proc/net
-
さまざまなネットワークについての擬似ファイルで、
それぞれがネットワーク層の各種の状態を与える。
これらのファイルの内容は ASCII 形式なので、cat で読み出せる。
とはいえ基本コマンドの
netstat(8)
はこれらのファイルの内容のよりすっきりとした表示を提供する。
- /proc/net/arp
-
アドレス解決に使われるカーネルの ARP テーブルの
ASCII 可読なダンプを保持している。
動的結合されたものと固定 (pre-programmed) の両方の
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 はローカルアドレスとポート番号のペアである。
(ソケットが接続している場合は)
remote address はリモートアドレスとポート番号の対である。
st はソケットの内部状態である。
tx_queue と rx_queue はカーネルメモリを消費している
送信/受信データキューのサイズ。
tr と tm->when と rexmits フィールドはソケット状態のカーネル
内部情報を保持しているが、これらはデバッグのときにしか役に立たない。
"uid" フィールドはソケット生成者の実効 UID を保持している。
- /proc/net/udp
-
UDP ソケットテーブルのダンプを保持している。
大部分の情報はデバッグ以外には使われない。
sl はソケットのカーネルハッシュスロットの値、
local address はローカルアドレスとポート番号のペアである。
(ソケットが接続している場合は)
remote 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 デバイスのリストと
その設定。
- /proc/scsi
-
scsi 中間レベル擬似ファイルといくつかの SCSI 低レベルドライバの
ディレクトリを含むディレクトリ。
これらのファイルは ASCII で表現されているので cat で読める。
いくつかのファイルは書き込み可能で、サブシステムの設定を変更したり、
特定の機能をオン/オフすることができる。
- /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) に
ドライバが割り当てられていると、そのドライバに対応したディレクトリが現れる。
それぞれのディレクトリには、
登録されたホストアダプタに対応してファイルが作られる。
このファイルの名前は、システムの初期化の際に
ホストアダプタに割り当てられた番号になる。
これらのファイルを読めばドライバとホストアダプタの設定や
統計などを見ることができる。
これらのファイルへの書き込みはホストアダプタごとに異なる動作を引き起こす。
たとえば latency と nolatency コマンドを用いると、
ルート (root、スーパーユーザー) は eata_dma ドライバの隠し測定コードの
オン/オフを切り替えることができる。
また lockup と unlock コマンドを用いると、ルートは
scsi_debug ドライバがシミュレートするバスロックアップ (bus lockup) を
制御することができる。
- /proc/self
-
このディレクトリはプロセスに (プロセス自身の)
/proc ファイルシステムへのアクセスを参照させる。
これは (このプロセスの) プロセス ID が名前であるディレクトリと同じものである。
- /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 秒である)。
最後の値 (タスク待ち) は疑似ファイル 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) が存在する。
これは、仮想化環境での動作時に他のオペレーティングシステムにより
消費された時間である。
- page 5741 1808
-
システムが (ディスクから) ページイン/ページアウトしたページ数。
- swap 1 0
-
スワップイン/スワップアウトされたページ数。
-
-
intr 1462898
この行はシステム起動時以降に処理された割り込みの回数を示す。
最初の欄は処理された割り込み全ての合計であり、それ以降の欄は
個々の割り込みについての合計数である。
- disk_io: (2,0):(31,30,5764,1,2) (3,0):...
-
(メジャー番号,マイナー番号):(読み書き回数, 読み込み回数,
読み込みブロック数, 書き出し回数, 書き出しブロック数)
(Linux 2.4 のみ)
- ctxt 115315
-
コンテクスト・スイッチの延べ回数。
- btime 769041601
-
起動時刻、紀元年 (epoch, 1970 年 1 月 1 日午前 0 時) からの秒数。
- 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)
を用いて書き換えることもできる。
いまのところ
abi, debug, dev, fs, kernel, net, proc,
rxrpc, sunrpc, vm
というサブディレクトリがあって、
それぞれがファイルとサブディレクトリを含んでいる。
- /proc/sys/abi
-
このディレクトリは空の場合もある。
このファイルが存在しないシステムもある。
- /proc/sys/debug
-
このディレクトリは空の場合もある。
- /proc/sys/dev
-
このディレクトリにはデバイス特有の情報 (たとえば dev/cdrom/info) が含まれる。
このディレクトリが空になっているシステムもある。
- /proc/sys/fs
-
このディレクトリには、サブディレクトリ
binfmt_misc, inotify, mqueue
と以下のファイルがある:
dentry-state, dir-notify-enable, dquot-nr, file-max,
file-nr, inode-max, inode-nr, inode-state,
lease-break-time, leases-enable,
overflowgid, overflowuid,
suid_dumpable,
super-max, super-nr.
- /proc/sys/fs/binfmt_misc
-
このディレクトリ以下のファイルについてのドキュメントは、
カーネルソースの
Documentation/binfmt_misc.txt
にある。
- /proc/sys/fs/dentry-state
-
このファイルには
nr_dentry, nr_unused, age_limit (age: 秒数), want_pages
(システムがリクエストしたページ数), ダミーの 2 つの値、
という 6 つの数字が書かれている。
nr_dentry は常に 0 であるよう思われる。
nr_unused 使用されていない dentry の数であるように思われる。
age_limit は dcache entry を利用できるようになるまでの age (秒数) である。
これはメモリが不足していて want_pages が 0 でなく、
カーネルが shrink_dcache_pages() を呼び出したが
dcache がまだ縮小されていない場合に、
あと何秒で dcache entry を利用できるかを表す。
- /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/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 を使い果たしてしまうだろう。
- /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/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
-
このディレクトリには以下のファイルがある:
acct, cad_pid, cap-bound,
core_pattern, core_uses_pid,
ctrl-alt-del, dentry-state, domainname,
hotplug, hostname,
htab-reclaim (PowerPC のみ),
java-appletviewer (binfmt_java は古い),
java-interpreter (binfmt_java は古い), l2cr (PowerPC のみ),
modprobe, msgmax, msgmnb,
msgmni, osrelease, ostype, overflowgid, overflowuid,
panic, panic_on_oops, pid_max,
powersave-nap (PowerPC のみ), printk, pty, random,
real-root-dev, reboot-cmd (SPARC のみ), rtsig-max,
rtsig-nr, sem, sg-big-buff,
shmall, shmmax, shmmni, sysrq, tainted, threads-max,
version, zero-paged (PowerPC のみ)
- /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
-
このファイルにはカーネルの
capability bounding set
(符号付き 10 進数表現) の値が書かれている。
execve(2)
中は、このセットとプロセスに許可されている権限の AND がとられる。
- /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(1)
プログラムに送られて、正しく再起動される。
値が 0 より大きい場合、Vulcan Nerve Pinch (tm) に反応して、
Linux はダーティバッファを同期させることなく、すぐに再起動を行う。
注意: プログラム (dosemu など) に 'raw' モードのキーボードがある場合、
ctrl-alt-del はカーネルの tty レイヤーに到達する前に
プログラムに遮断され、
プログラムに送られてどのように扱うかが決められる。
- /proc/sys/kernel/hotplug
-
このファイルはホットプラグ・ポリシー・エージェントのパスが書かれている。
このファイルのデフォルト値は "/sbin/hotplug" である。