proc - ファイルのフォーマットと規約の説明 - Linux コマンド集 一覧表
名前
/proc - プロセスの情報を含む擬似ファイルシステム
説明
/proc ファイルシステムは擬似的なファイルシステムであり、 カーネル内のデータへのインターフェースとして使用される。 一般的には /proc にマウントされる。 大部分のファイルは読み出し専用 (read-only) であるが、 いくつかのファイルは書き込み可能であり、 そのファイルに書き込めばカーネルの内部変数を変更できる。
以下は /proc 階層の簡単なあらましである。
- /proc/[number]
- 実行中のプロセスについてのサブディレクトリ。 サブディレクトリ名は (そのプロセスの) プロセス ID である。 各サブディレクトリは、以下の擬似ファイルとディレクトリを含む。
- /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), fseek (3) を通して、プロセスのメモリのページにアクセスするために使われる。
- /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 %lu
- プロセスのカーネルフラグワード。 ビットの意味は、 <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 値。
- 0 %ld この値は削除されたフィールドの場所埋めで、 0 にハードコードされている。
- itrealvalue %ld
- インターバルタイマによって、次に SIGALRM がプロセスへ送られるまでの時間 (単位 jiffies)。
- starttime %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
- プロセスが死んだときに親プロセスに送られるシグナル。
- processor %d
- このプロセスを最後に実行した CPU の番号。
- rt_priority %lu (カーネル 2.5.19 以降)
- リアルタイム・スケジューリングの優先度 ( sched_setscheduler (2)参照)。
- policy %lu (カーネル 2.5.19 以降)
-
スケジューリング・ポリシー
(
sched_setscheduler
(2)参照)。
- /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
- カーネルに組み込まれているファイルシステムのテキスト形式のリスト。 ついでにいうと、 mount (1)はファイルシステムが指定されていないとき (-t オプションがないときか -t auto が指定されているとき) には、 このリストを一覧してファイルシステムを決めようとする。
- /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
- コンパイルのときに 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 はそのアドレスの RFC826 で定められているハードウェアの形式、 Flags は ARP 構造体 (/usr/include/linux/if_arp.h 内で定義されている) の 内部フラグ、 HW address はその IP アドレスにマップされているデータリンク層のアドレス (もしわかっていれば) である。 - /proc/net/dev
-
擬似ファイル dev はネットワークデバイスの状態情報を含んでいる。
これは送受信したパケット数、エラーとコリジョン (collision) の回数、
その他の基本的な統計を与える。
これらは
ifconfig
(8) がデバイスの状態を報告するのに使われる。
フォーマットは以下のとおり:
Inter-| Receive face |bytes packets errs drop fifo frame compressed multicast lo: 2776770 11307 0 0 0 0 0 0 eth0: 1215645 2751 0 0 0 0 0 0 ppp0: 1622270 5552 1 0 0 0 0 0 tap0: 7714 81 0 0 0 0 0 0
Inter-| Transmit face |bytes packets errs drop fifo colls carrier compressed lo:2776770 11307 0 0 0 0 0 0 eth0:1782404 4324 0 0 0 427 0 0 ppp0: 354130 5669 0 0 0 0 0 0 tap0: 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 以降)。 - 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 倍にすべきである。 これは標準入力・標準出力・ネットワークソケットを扱うにも 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 進数表現) の値が書かれている。 exec ()中は、このセットとプロセスに許可されている権限の 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" である。
- /proc/sys/kernel/domainname と /proc/sys/kernel/hostname
-
これらのファイルは、コマンド domainname, hostname と全く同じ方法で、
マシンの 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
- このファイルはカーネルソースファイル Documentation/kmod.txt に記述されている。
- /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 で新しく追加された) このファイルは、 oops や BUG が起こった場合のカーネルの動作を制御する。 ファイルに 0 が書かれている場合、システムは操作を続行しようとする。 1 が書かれている場合、システムは (klogd が oops 出力を記録する時間を与えるために) 数秒間遅延した後、 panic を起こす。 /proc/sys/kernel/panic ファイルも 0 でない場合、マシンは再起動される。
- /proc/sys/kernel/pid_max
- (Linux 2.5 で新しく追加された) このファイルは、 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_loglevel は console_loglevel に設定できる 最小 (最高) の値である。 default_console_loglevel は console_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 realtime (queued) signal の 最大数を調整するのに使用される。
- /proc/sys/kernel/rtsig-nr
- (2.6.7 までのカーネルにのみ存在する) このファイルは現在キューに入っている POSIX realtime signal の数を表す。
- /proc/sys/kernel/sem (Linux 2.4 以降)
-
このファイルには System V IPC セマフォを制限する 4 つの値が書かれている。
これらのフィールドは次の順番に並んでいる:
セマフォ集合ごとのセマフォ数の最大値。
システム全体での、全てのセマフォ集合におけるセマフォ数の制限。
semop (2) コールに指定されるオペレーション数の最大値。
システム全体でのセマフォ識別子の最大値。
- /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) 共有メモリセグメントを作成するときの 最大サイズの制限を取得または設定できる。 現在は 1Gb までの共有メモリセグメントが カーネルでサポートされている。 この値のデフォルトは SHMMAX である。
- /proc/sys/kernel/shmmni
- (Linux 2.4 以降で使用可能) このファイルは、システム全体で作成可能な System V 共有メモリセグメント数を指定する。
- /proc/sys/kernel/version
-
このファイルには、以下のような文字列が書かれている:
#5 Wed Feb 25 21:49:24 MET 1998.TP
'#5' はこのソースで構築された 5 番目のカーネルであることを意味する。 その後にある日付はカーネルが構築された時刻を表す。 - /proc/sys/kernel/zero-paged (PowerPC のみ)
- このファイルはフラグを含む。 (0 以外の値で) 有効された場合、Linux-PPC はアイドルループで pre-zero page を行うので、get_free_pages の速度が向上する可能性がある。
- /proc/sys/net
- このディレクトリにはネットワーク関係の情報が入っている。 このディレクトリにあるファイルのいくつかについては、 tcp (7) や ip (7) に説明がある。
- /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/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/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) に関する情報を表示する。
仮想メモリの振舞いを分析するのに役立つ。
関連項目
cat
(1),
find
(1),
free
(1),
mount
(1),
ps
(1),
tr
(1),
uptime
(1),
chroot
(2),
mmap
(2),
readlink
(2),
syslog
(2),
slabinfo
(5),
hier
(7),
arp
(8),
dmesg
(8),
hdparm
(8),
ifconfig
(8),
init
(8),
lsmod
(8),
lspci
(8),
netstat
(8),
procinfo
(8),
route
(8)
/usr/src/linux/Documentation/filesystems/proc.txt
警告
ほとんどの文字列 (たとえば環境変数やコマンド行) は内部表現のままなので、
各フィールドは NULL バイト ('\0') で区切られている。
だから、od -c
や tr "\000" "\n"
を使えば、
それらはより読みやすくなる。
また echo `cat <file>`
でもよい。
このマニュアルは不完全であり、たぶん不正確で、しばしば更新される必要がある。
謝辞
/proc/sys/fs と /proc/sys/kernel の資料は、
Rik van Riel が書いたカーネルソースファイルのドキュメントに
密接に基づいている。