PROC(5)

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

説明
/proc は擬似的なファイルシステムであり、カーネル内のデータへの インターフェースとして、/dev/kmem を読み出し解析する手段を代替するもの として用意された。 大部分のファイルは読み出し専用(read-only)であるが、いくつかのファイル は書き込み可能であり、そのファイルに書き込めばカーネルの内部変数を変更 できる。

以下は /proc 階層の簡単なあらましである。

[数字]
    実行中のプロセスについてのサブディレクトリ。 サブディレクトリ名は(そのプロセスの)プロセスIDである。 以下の擬似ファイルとディレクトリを含む．

    cmdline
        プロセスの完全なコマンド行を保持している。 ただし現在スワップアウトされているプロセスやゾンビプロセスの場合は、 このファイルは何も含んでいない。すなわち、読み出した結果は一文字も含ん でいないファイルのようになる。 このファイルは改行(newline)ではなくヌル(null)で終端されている。

    cwd プロセスのカレントワーキングディレクトリへのリンク。 プロセス 20 の cwd を見つけるためには、たとえば次のようにすればよい。
        cd /proc/20/cwd; /bin/pwd

    多くの場合 pwd コマンドはシェルの内部コマンドであるので注意すること。 こちらを使ってしまうと上の場合ではうまく動作しないだろう。

    environ
        このファイルはプロセスの環境変数を含んでいる。 各エントリはヌル文字で区切られていて、最後もヌル文字である。 したがって、プロセス 1 の環境変数を表示するためには 次のようにすればよい。
        (cat /proc/1/environ; echo) | tr "\000" "\n"

    (これが何の役に立つのかについては lilo(8)を見よ)。

    exe 実行されたバイナリへのポインタでシンボリックリンクのようにみえる。 特殊ファイル exe を readlink(2) すると [デバイス番号]:iノード番号 というフォーマットの文字列が返る。 たとえば、[0301]:1502 はメジャーデバイス番号 03 (IDE, MFM などのドライブ) マイナーデバイス番号 01 (最初のドライブの最初のパーティション) の デバイス上の iノード番号 1502 である。 また、このシンボリックリンクの先を辿ることもできる - exe をオープンしようとすると実行形式をオープンすることになる。 /proc/[数字]/exe とタイプすれば [数字] のプロセスのコピーを実行できる。 -inum オプションをつけた find(1) はこのファイルの所在を探すのに使える。

    fd  プロセスがオープンしているファイルへのエントリを含むサブディレクトリ。 そのファイルへのファイルディスクリプタがファイル名で、実際のファイル へのシンボリックリンクになっている( exe と同じように)。 したがって 0 は標準入力、1 は標準出力、2 は標準エラー出力、などとなる。 標準入出力を用いず、引き数として受け取ったファイル名に対して入力、出力 を行うようなプログラムは、以下のようにすれば実質的にフィルタプログラム として用いることができる。ここで -i は入力ファイルを、 -o は出力ファイルを、それぞれ指定するフラグであると仮定している。
        foobar -i /proc/self/fd/0 -o /proc/self/fd/1 ...
        この方法はファイルをシーク(seek)するようなプログラムではうまく働かない ことに注意、なぜならば fd ディレクトリ内の上のようなファイルはシーク できないから。 /proc/self/fd/N はだいたいある種の UNIX や UNIXライクなシステムの /dev/fd/N と同じである。 事実、Linux のたいていの MAKEDEV スクリプトは /dev/fd を /proc/self/fd へのシンボリックリンクにしている。

    maps
        現在マップされているメモリ領域とそのアクセスパーミッションを含む。 フォーマットは以下のとおり:
        address           perms offset   dev   inode
        00000000-0002f000 r-x-- 00000400 03:03 1401
        0002f000-00032000 rwx-p 0002f400 03:03 1401
        00032000-0005b000 rwx-p 00000000 00:00 0
        60000000-60098000 rwx-p 00000400 03:03 215
        60098000-600c7000 rwx-p 00000000 00:00 0
        bfffa000-c0000000 rwx-p 00000000 00:00 0

    ここで address はプロセスのアドレス空間でそのメモリ領域が占めている アドレスで、perms はパーミッションのセットである。
    r = read
    w = write
    x = execute
    s = shared
    p = private (copy on write)

    offset はファイル(などの)中でのオフセット、 dev はデバイス (メジャーデバイス番号:マイナーデバイス番号)、 inode はそのデバイスの iノード番号である。 (inode が) 0 は bss [訳注: 初期化しない(0に値が設定される)大域変数が割り当てられる領域] などのように、このメモリ領域にどの iノードも割り当てられていないことを 意味している。

    mem 事実上同じデバイス番号を持ってはいるが、これは mem (1,1) デバイスとは 異なっている。 /dev/mem デバイスはまったくアドレス変換をしていない物理メモリである が、ここでの mem フィイルはプロセスがアクセスする(ときに見える)メモリ である。いまのところこのファイルに mmap(2) することはできないし、カーネルに一般的な mmap(2) が追加されるまではできないままだろう(このマニュアルが読まれるときには できるようになっているかもしれない)。

    mmap
        mmap(2) によってマップされたファイルへのシンボリックリンク(exe, fd/* と同じ形 式)を含むディレクトリ。maps はこのディレクトリの情報をすべて含むので、 /proc/*/mmap は廃れたものとみなされている。 ふつう "0" は libc.so.4 である。 /proc/*/mmap はカーネルバージョン 1.1.40 で削除された(ほんとうに なくなった！ )。

    root
        Unix と Linux では、 ファイルシステムのルート(/)をプロセスごとに別々にできる。 これはシステムコール chroot(2) によって設定する。 root はこのファイルシステムのルートを exe や fd/* などと同じ形式で指し ている

    stat
        プロセスの状態についての情報。これは ps(1) に使われる。 各フィールドを順番に scanf(3) フォーマット指定子付きで以下に示す。

        pid %d
            プロセスID。

        comm %s
            括弧でくくられた実行形式のファイル名。 実行形式がスワップアウトされているかどうかにかかわらず見ることができる。

        state %c
            "RSDZT" のどれか１文字。 R は実行中(running)を、S は割り込み可能な休眠状態(sleeping in an interruptible wait)を、D は割り込み不可な休眠状態(sleeping in an uninterruptibli wait) もしくはスワップされている状態(swapping)を、Z はゾンビ状態(zombie)を、 T はトレースされている(traced)か(シグナルにより)停止している状態 (stopped)をあらわしている[訳注: ページング中(paging)を意味する W もあります]。

        ppid %d
            親プロセスのPID。

        pgrp %d
            プロセスのプロセスグループID。

        session %d
            プロセスのセッションID。

        tty %d
            プロセスの接続している端末名。

        tpgid %d
            プロセスが接続している端末を所有しているプロセスの、プロセスグループ ID。

        flags %u
            プロセスのフラグ。いまのところ、すべてのフラグで math bit が立っている。 なぜならば crt0.s が数値演算エミュレーションをチェックするので、これは 出力に含まれないからである。 すべてのプロセスが コンパイルされた C のプログラムというわけではないの で、これはたぶんバグである。 math bit は 10進で 4、traced bit は 10 進で 10 である[訳注: ?]

        minflt %u
            プロセスが引き起こしたマイナーフォールト(minor fault、ディスクから メモリページへのロードを必要としないフォールト)の回数。

        cminflt %u
            プロセスとその子プロセスが引き起こしたマイナーフォールトの回数。

        majflt %u
            プロセスが引き起こしたメジャーフォールト(major fault、ディスクから メモリページへのロードを必要とするフォールト)の回数。

        cmajflt %u
            プロセスとその子プロセスが引き起こしたメジャーフォールトの回数。

        utime %d
            プロセスのユーザーモードでの実行時間(単位 jiffies [訳注: 1/100秒単位])。

        stime %d
            プロセスのカーネルモードでの実行時間(単位 jiffies)。

        cutime %d
            プロセスと子プロセスのユーザーモードでの実行時間(単位 jiffies)。

        cstime %d
            プロセスと子プロセスのカーネルモードでの実行時間(単位 jiffies)。

        counter %d
            プロセスの次回のタイムスライスの(現時点での)最大値(単位 jiffies)、 もしプロセスがちょうど実行中ならばそのタイムスライスが終わるまでの時間。

        priority %d
            標準的な nice 値に 15 を加えた値。この値はカーネル内ではけっして負に ならない。

        timeout %u
            プロセスの次のタイムアウト時間(単位 jiffies)。

        itrealvalue %u
            インターバルタイマのためにプロセスへ次に SIGALRM が送られる時刻 (単位 jiffies)。

        starttime %d
            プロセスの起動時刻。システムが起動した時刻が起点(単位 jiffies)。

        vsize %u
            仮想メモリのサイズ。

        rss %u
            Resident Set Size。プロセスが持っている実メモリ上のページ数から管理用 に使われるページ数である 3 を引いた値。 これはちょうどテキスト・データ・スタック空間に使われているページ数である。 demand-loaded in されていない、あるいはスワップアウトされたページの数 は含んでいない。

        rlim %u
            現在の rss の上限(通常は 21 4748 3647)、単位はバイト(byte)。

        startcode %u
            プログラムテキストが実行可能であるような領域の先頭アドレス。

        endcode %u
            プログラムテキストが実行可能であるような領域の末尾アドレス。

        startstack %u
            スタックの開始アドレス。

        kstkesp %u
            現在の ESP (32ビットスタックポインタ)の値、プロセスのカーネルスタック ページにある。

        kstkeip %u
            現在の EIP (32ビットインストラクションポインタ)の値。

        signal %d
            待機中のシグナルのビットマップ(ふつうは 0)。

        blocked %d
            ブロックされた(blocked)シグナルのビットマップ(ふつうは 0、シェルでは 2)。

        sigignore %d
            無視された(ignored)シグナルのビットマップ。

        sigcatch %d
            捕えられた(catched/caught)シグナルのビットマップ。

        wchan %u
            プロセスが待っている“チャネル”。 これはシステムコールのアドレスであり、文字名が必要ならば(アドレスと システムコール名との)対応表から見つけられる (もし /etc/psdatabase [訳注: このファイル名はパッケージによります]を 更新しているならば、ps -l して WCHAN フィールドをみよ)。

        nswap %lu
            プロセスがスワップアウトされた回数?[訳者追加]。

        cnswap %lu
            プロセスと子プロセスがスワップアウトされた回数?[訳者追加]。

    statm
        メモリの使用状況(size, resident, share, trs, lrs, drs, dt の値) [訳者追加]。

    status
        読み易くしたプロセスの状態の情報を含むファイル[訳者追加]。

apm CONFIG_APM を有効にしたときに存在する。詳細は drivers/char/apm_bios.c 中のコメントを参照のこと[訳者追加]。

cmdline
    カーネルコマンドラインの内容[訳者追加]。

cpuinfo
    CPU とシステムアーキテクチャに依存する項目を集めたもので、アーキテクチャ によって内容は異なる。 ふたつだけ共通の項目がある。cpu は現在使われている CPU (推測した もの)で、BogoMIPS はカーネルの初期化時に計算されるシステム定数で ある。

devices
    メジャーデバイス番号とデバイスグループのテキスト形式のリスト。 このファイルはカーネルとの整合性を保つために MAKEDEV スクリプトが使う ことができる。

dma 登録されている ISA DMA (direct memory access) チャネルのリスト。

filesystems
    カーネルに組み込まれているファイルシステムのテキスト形式のリスト。 ついでにいうと、 mount(1) はファイルシステムが指定されていないとき(-t オプションがないときか -t auto が指定されているとき)には、このリストを一覧してファイルシステムを 決めようとする。

interrupts
    (すくなくとも)i386 アーキテクチャでは IRQ ごとの割り込み回数の記録に使 われる。簡単に読むことのできるフォーマットで、ASCII で表記されている。

ioports
    現在登録され使われている I/Oポート領域のリスト。

kcore
    このファイルはシステムの物理メモリを表現しており、コアファイル形式 (core file format)で保持されている。 この擬似ファイルと strip されていないカーネルのバイナリ (/usr/src/linux/tools/zSystem [パッケージに依存します]) があれば GDB はカーネル内の任意のデータ構造の現在の状態を調べられる。 このファイルの大きさは物理メモリ(RAM)のサイズに 4KB を加えた値である。

kmsg
    このファイルは syslog(2) システムコールの代わりにカーネルメッセージのログを取るために使える。 プロセスがこのファイルを読むためにはスーパーユーザー権限が必要であり、 ただひとつのプロセスだけがこのファイルを読み出せる。 もし syslog プロセスが走っていてカーネルメッセージのログをとるために システムコール syslog(2) を使っているならば，このファイルは読めないだろう。 このファイルの中の情報は dmesg(8) によって表示される。

ksyms
    カーネルの外部シンボル定義を保持する。 modules(X) 関係のツールが動的にリンクしたりローダブルモジュールをバインド(bind)す るのに使われる。

loadavg
    ロードアベレージは 1, 5, 15 分あたりの実行キュー内のジョブ数の平均値 を与える。これは uptime(1) などのプログラムによって得られる値と同じである。

locks
    flock(2) されたiノードの情報[訳者追加]。

malloc
    コンパイルのときに CONFIGDEBUGMALLOC が定義されているときのみ、 このファイルは存在する。

meminfo
    このファイルは free(1) によってシステムの未使用および使用中のメモリ量(物理メモリとスワップ)と、 カーネルに使われている共有メモリとバッファの情報を報告するために使われる。 KB の代わりにバイト(byte)を使うことを除けば free(1) と同じフォーマットである。

mdstat
    メタディスクの情報[訳者追加]。

modules
    現在システムにロードされているモジュールのテキスト形式のリスト。

mounts
    現在マウントしているファイルシステムの情報[訳者追加]。

net さまざまなネットワークについての擬似ファイルで、それぞれがネットワーク 層の各種の状態を与える。 これらのファイルの内容は ASCII 形式なので、cat で読み出せる。 とはいえ基本コマンドの netstat(8) はこれらのファイルの内容のよりすっきりとした表示を与える。

    aliases
        CONFIG_NET_ALIAS を有効にしたときに存在する[訳者追加]。

    arp アドレス解決に使われるカーネルの ARP テーブルの ASCII 可読なダンプを保 持している。動的結合されたものと固定(pre-programmed)の両方の APP エントリを見ることができる。フォーマットは以下のとおり:
        IP address       HW type     Flags       HW address
        10.11.100.129    0x1         0x6         00:20:8A:00:0C:5A
        10.11.100.5      0x1         0x2         00:C0:EA:00:00:4E
        44.131.10.6      0x3         0x2         GW4PTS

    ここで IP address はマシンの IPv4 アドレス、 HW type は そのアドレスの RFC 826 で定められているハードウェアの形式、 Flags は ARP 構造体(/usr/include/linux/if_arp.h 内で定義されている)の 内部フラグ、 HW address はその IP アドレスにマップされている物理層のアドレス(もしわ かっていれば)である。

    [訳注: 2.0.34 では以下のようなフォーマットになっています
        IP address       HW type     Flags       HW address            Mask     Device
        10.11.100.129    0x1         0x6         00:20:8A:00:0C:5A     *        eth0
        10.11.100.5      0x1         0x2         00:C0:EA:00:00:4E     *        eth0
        44.131.10.6      0x3         0x2         GW4PTS                *        eth0

    ]

    dev 擬似ファイル dev はネットワークデバイスの状態情報を含んでいる。 これは送受信したパケット数、エラーとコリジョン(collision)の回数その他の 基本的な統計を与える。 これらは ifconfig(8) がデバイスの状態を報告するのに使われる。 フォーマットは以下のとおり:
        Inter-|   Receive                  |   Transmit
         face |packets errs drop fifo frame|packets errs drop fifo colls carrier
            lo:      0    0    0    0    0     2353    0    0    0     0    0
          eth0: 644324    1    0    0    1   563770    0    0    0   581    0

    igmp
        IGMP の状態[訳者追加]。

    ip_acct
        CONFIG_IP_ACCT を有効にしたときのみ存在[訳者追加]。

    ipx 情報なし。

    ipx_route
        情報なし。

    rarp
        このファイルは arp と同じフォーマットで 逆アドレス解決サービス(reverse address lookup services) rarp(8) に供給するために使われる現在の逆マップデータベースの内容を含んでいる。 RARP がカーネルコンフィグレーションに設定されていなければこのファイル は存在しない。

    raw RAW ソケットテーブルのダンプを保持している。 ほとんどの情報はデバッグ以外では使われない。 sl の値はソケットのカーネルハッシュスロット、 local_address はローカルアドレスとプロトコル番号の対 [訳者追加: rem_address はリモートアドレスとプロトコル番号の対]。 st はソケットの内部状態。 tx_queue と rx_queue はカーネルメモリを消費している送信/受信データキュー のサイズ。 tr と tm->when と rexmits フィールドは RAW では使われていない。 uid フィールドはソケット生成者の実効 uid (euid) を保持している。

    route
        情報なし。 route(8) (の出力)のようにみえる。

    rt_cashe
        ルーティングテーブルのキャッシュ情報[訳者追加]。

    snmp
        このファイルは SNMP エージェントが必要とする IP, ICMP, TCP, UDP 管理情報を ASCII データとして保持している。 現在の TCP mib 書き込みは不完全である。 1.2.0 では完全になることが望まれる。

    sockstat
        ソケットの状態[訳者追加]。

    tcp TCP ソケットテーブルのダンプを保持している。大部分の情報はデバッグ以外 には使われない。 sl はソケットのカーネルハッシュスロットの値、 local address はローカルアドレスとポート番号の対である。 (もしソケットが接続しているならば) remote address はローカルアド レスとポート番号の対である。 st はソケットの内部状態である。 tx_queue と rx_queue はカーネルメモリを消費している送信/受信データキュー のサイズ。 tr と tm->when と rexmits フィールドはソケット状態のカーネル 内部情報を保持しているが、これらはデバッグのときにしか役に立たない。 uid フィールドはソケット生成者の実効 uid (euid) を保持している。

    udp UDP ソケットテーブルのダンプを保持している。大部分の情報はデバッグ以外 には使われない。 sl はソケットのカーネルハッシュスロットの値、 local address はローカルアドレスとポート番号の対である。 (もしソケットが接続しているならば) remote address はローカルアド レスとポート番号の対である。 st はソケットの内部状態である。 tx_queue と rx_queue はカーネルメモリを消費している送信/受信データキュー のサイズ。 tr と tm->when と rexmits フィールドは UDP では使われていない。 uid フィールドはソケット生成者の実効 uid (euid) を保持している。 フォーマットは以下のとおり:
        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
        [訳注: 2.0.34 では以下のとおり:
        sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode
         0: 00000000:008A 00000000:0000 07 00000000:00000000 00:FCDB5D93 00000000     0        0 13839
         1: 00000000:0283 00000000:0000 07 00000000:00000000 00:FCDB5D93 00000000  1011        0 1229
         2: 00000000:00A1 00000000:0000 07 00000000:00000000 00:FCDB5D93 00000000     0        0 881
        ]

    unix
        UNIX ドメインソケットのリスト。 フォーマットは以下のとおり:

        Num RefCount Protocol Flags    Type St Path
         0: 00000002 00000000 00000000 0001 03
         1: 00000001 00000000 00010000 0001 01 /dev/printer
        [訳注: 2.0.34 では以下のように
        Inode エントリが追加されています
        Num RefCount Protocol Flags    Type St Inode Path
         0: 00000002 00000000 00000000 0001 03   843
         1: 00000001 00000000 00010000 0001 01   809 /dev/printer
        ]

    ここで、Num はカーネルのテーブルスロット数、 RefCount はソケットを使用しているユーザー数、 Protocol はいまのところいつも 0 で、Flags はソケットの状態を保持している カーネル内部のフラグである。 Type はいまのところいつも 1 (UNIX ドメインのデータグラムソケットは現在 のカーネルではサポートされていない[訳注: 2.0.34 ではサポートされている ようです])。 St はソケットの内部状態で、Path は(もしあれば)ソケットのパス名である。

pci カーネルの初期化時に見つかったすべての PCI デバイスのリストとその コンフィグレーション。

scsi
    scsi 中間レベル擬似ファイルといくつかの SCSI 低レベルドライバの ディレクトリを含むディレクトリ。 これらのファイルは ASCII で表現されているので cat で読める。 いくつかのファイルは書きこみ可能で、サブシステムの設定を変更したり、 特定の機能をオン/オフすることができる。

    scsi
        カーネルが知っているすべての SCSI デバイスのリスト。 このリストは起動時に(コンソールで)見られるものとほぼ同じである。 scsi は現在のところ singledevice コマンドのみをサポートしている、 これによりルート(root)は既知のデバイスリストへ活線挿抜(hotplugged) デバイスを加えることができる。 echo 'scsi singledevice 1 0 5 0' > /proc/scsi/scsi とするとホストアダプタ scsi1 は SCSI チャネル 0 で ID 5 LUN 0 のデバイ スを探す。もしこのアドレスに既知のデバイスがあるか、 不正なアドレスであったならばエラーが返る。

    drivername
        いまのところ drivername は NCR53c7xx, aha152x, aha1542, aha1740, aic7xxx, buslogic, eata_dma, eata_pio, fdomain, in2000, pas16, qlogic, scsi_debug, seagate, t128, u15-24f, ultrastore, wd7000 のどれかである。 少なくとも一つの SCSI ホストバスアダプタ(HBA)にドライバが割り当てられ ていると、そのドライバに対応したディレクトリが現れる。 それぞれのディレクトリには、登録されたホストアダプタに対応してファイル が作られる。このファイルの名前は、システムの初期化の際にホストアダプタ に割り当てられた番号になる。 これらのファイルを読めばドライバとホストアダプタの設定や統計などを見 ることができる。 これらのファイルへの書き込みはホストアダプタごとに異なる動作を引き起す。 たとえば latency と nolatency コマンドにより ルート(root、スーパーユーザー)は eata_dma ドライバの隠し測定コードの オン/オフを切り替えることができる。 また lockup と unlock コマンドによりルートは scsi_debug ドライバがシミュレートするバスロックアップ(bus lockup)を 制御することができる。

self
    このディレクトリはプロセスに(プロセス自身の) /proc ファイルシステム へのアクセスを参照させる。 これは(このプロセスの)プロセス ID が名前であるディレクトリと同じものである。

stat
    カーネル/システムの統計。

    cpu  3357 0 4313 1362393
        ユーザーモード、 低い優先度(nice)でのユーザーモード、 システムモード、 タスク待ち(idle task)、 でそれぞれシステムが消費した時間を jiffies (1/100 秒) を単位として計測 した値。 最後(タスク待ち)の値は擬似ファイル uptime の 2 番目のエントリの値を 100 倍したものである。

        disk 615463 0 594 0 この4つのエントリは現時点では実装されていない。 どうしてこのようになっているのかわたしにはわからない。 なぜならば他のマシンでのカーネルの統計はたいてい転送レートなり秒あたり の I/O の数だけで、これではドライブあたりひとつのフィールドにしかならな いから[訳注: 2.0.34 では最初のエントリはハードディスクへの 総アクセス回数です]。

    disk_rio 378458 0 594 0
        最初のエントリはハードディスクからの読み出しアクセスの延べ回数[訳者追加]。

    disk_wio 237005 0 0 0
        最初のエントリはハードディスクへの書き込みアクセスの延べ回数[訳者追加]。

    disk_rblk 788452 0 1188 0
        最初のエントリはハードディスクから読み出したブロックの総数[訳者追加]。

    disk_wblk 491740 0 0 0
        最初のエントリはハードディスクへ書き込んだブロックの総数[訳者追加]。

    page 5741 1808
        システムが(ディスクから)ページイン/ページアウトしたページ数。

    swap 1 0
        スワップイン/スワップアウトされたページ数。

    intr 1462898
        システム起動時から数えた割り込みの回数 [訳注: 2.0.34 では拡張されて

    intr 12861706 8363372 79281 0 0 91943 0 0 0 0 0 3845162 0 260206 1 221741 0
        となっています。 2番目以降のエントリは(x86 の場合) IRQ 0 から 15 までのそれぞれの 割り込み回数です]。

    ctxt 115315
        コンテクスト・スイッチの延べ回数。

    btime 769041601
        起動時刻、エポック(epoch, 1970年1月1日午前0時)からの秒数。

    processes
        延べフォーク(fork)数[訳者追加]。

sys このディレクトリ(1.3.57 以降に存在)はカーネル変数に対応するいくつかの ファイルとサブディレクトリを含む。 これらの変数は読み出し可能である。また場合によっては proc ファイルシステムや、システムコール sysctl(2) を用いて書き換えることもできる。 いまのところ kernel, net, vm というサブディレクトリがあって、それぞれがファイルとサブディレクトリを 含んでいる。

    kernel
        以下のファイルを含んでいる。機能はファイル名から明らかであろう。 domainname, file-max, file-nr, hostname, inode-max, inode-nr, osrelease, ostype, panic, real-root-dev, securelevel, version

    (読み出し専用の)ファイル file-nr は現在オープンされているファイルの総数を与える。

    カーネルが保持できるオープンされたファイルの最大数を与える。 もし(デフォルトの)1024では不十分ならば次のようにせよ。
    echo 4096 > /proc/sys/kernel/file-max

    同様に inode-nr と inode-max は(オープンされた)iノードの現在の総数と最大数を与える。

    ostype, osrelease, version は文字列 /proc/version の各部分を与える。

    ファイル panic はカーネル変数 panic_timeout への読み出しと書き込みのアクセスを与える。 この値が零ならば、パニック時にカーネルは(無限)ループに入る。 もし非零ならばその秒数だけ待ってから自動的に再起動する。

    ファイル securelevel はいまのところ無意味に思える - ルート(root)権限はあまりに強力すぎる。

uptime
    このファイルは システム起動時から経過した時間(秒)と アイドル(idle)しているプロセスが消費した時間(秒) のふたつの数を含む。

version
    現在稼働しているカーネルのバージョン識別子である文字列。 例えばこのように:
    Linux version 1.0.9 (quinlan@phaze) #1 Sat May 14 01:51:54 EDT 1994

関連項目
cat(1), find(1), free(1), mount(1), ps(1), tr(1), uptime(1), readlink(2), mmap(2), chroot(2), syslog(2), hier(7), arp(8), dmesg(8), netstat(8), route(8), ifconfig(8), procinfo(8) まだまだある

準拠
だいたい Linux 1.3.11 カーネルに準拠している。必要なら更新してね！ 最終更新は Linux 1.3.11 についてまで [訳注: Linux 2.0.34 を参考に訳出しました]。

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

バグ
/proc ファイルシステムは chroot (2) して動いているプロセスにおいてはセキュリティホールになるかもしれない。 例えば、 chroot 後の階層に /proc がマウントされている場合、/proc/1/root へ chdir(2) すると、ファイルシステム本来のルートを返す。 これはバグではなく仕様だとも考えられる。なぜならば Linux は fchroot(2) の呼び出しをまだサポートしていないからだ [訳注: 2.0.34 にもありません]。