/proc

読み:プロック
外語:/proc: process 英語
品詞:名詞

UNIXPOSIX準拠OS(Linux等)で、プロセス関係の情報が置かれるディレクトリ

目次

具体的には、procfsをマウントするためのディレクトリ(マウントポイント)である。

UNIX System VBSDLinuxなどオペレーティングシステム(OS)を問わずこのディレクトリは存在するが、その内容については各OSのカーネルの仕様に依存しており、相互の互換性などはない。

OSによっては、プロセスの情報だけでなく、カーネルの情報を読み出すこともできる。

Linuxでも、どのディストリビューションにも例外なくあるが、FHSには規定されていない。

ファイル

ここに置かれた情報は、実際にはファイルとしてその実体は存在しない。

procfsがマウントされていると、PIDのディレクトリがあるように見え、ここから各種プロセスの情報を読み出すことができる。情報は一見ディレクトリやファイルに見えるが、仮想化されたものであって、ディスク上にファイル等がある訳ではない。

UNIXだけでなくLinuxでも同様だが、加えてカーネル内部の情報にアクセスするための情報がある。これも一見ファイルに見えるが、同様にファイルではない。

カレントプロセス

FreeBSDなどでは、/proc/curprocが、自分のプロセスIDへのシンボリックリンクになっているように見える。

また、Linuxでも/proc/selfが、自分のプロセスIDへのシンボリックリンクになっているように見える。

Linux

Linuxでは、psなどの基本的なコマンドはじめ様々なコマンドで必須となるため、標準でprocfsをマウントする。

ただし、Linuxのprocfsはプロセスとは直接関係のないカーネルの情報も提供されている。プロセスと無関係なものについては、順次sysfsへと移動されている。

プロセスに関する情報は、/proc/<PID> ディレクトリ以下で提供されており、様々な仮想ファイルが提供されている。代表的なものをいくつか紹介する。

  • /proc/<PID>/cmdline ‐ プロセスを起動したときのコマンドライン文字列
  • /proc/<PID>/cwd ‐ カレントディレクトリへのシンボリックリンク
  • /proc/<PID>/environ ‐ 環境変数

    各エントリーは\0で区切られ、最後にも\0があるかもしれない。

    例えば次のようにすれば、読みやすい。

    $ (cat /proc/self/environ; echo) | tr '\000' '\n'

    他の同様の項目も同様である。

  • /proc/<PID>/exe ‐ 実行ファイルへのシンボリックリンク
  • /proc/<PID>/fd ‐ fdに対応するシンボリックリンク

    /proc/<PID>/fd/N は、/dev/fd/N とだいたい同じである。

  • /proc/<PID>/fdinfo ‐ fdに対応するファイル位置やフラグ情報が置かれるディレクトリ
  • /proc/<PID>/maps ‐ メモリーマップとアクセスパーミッション
  • /proc/<PID>/mountinfo ‐ マウントポイントについての情報
  • /proc/<PID>/root ‐ ルートディレクトリへのシンボリックリンク(通常は/となる)
  • /proc/<PID>/stack ‐ スタック情報
  • /proc/<PID>/stat ‐ そのプロセスの状態についての情報(処理系向け)
  • /proc/<PID>/statm ‐ ページ単位でのメモリー使用量
  • /proc/<PID>/status ‐ そのプロセスの状態についての情報(人間向け)
  • /proc/<PID>/task ‐ スレッド情報

    この下にスレッドIDでサブディレクトリがあり、その中身は/proc/<PID>/taskとほぼ同じ構成である。

プロセスと直接無関係なものは、次の通りである。代表的なものをいくつか紹介する。

  • /proc/cmdline ‐ 起動時にLinuxカーネルに渡された引数
  • /proc/cpuinfo ‐ CPUの情報
  • /proc/devices ‐ メジャーデバイス番号の一覧
  • /proc/diskstats ‐ ディスクの統計情報
  • /proc/dma ‐ ISA DMAの一覧
  • /proc/filesystems ‐ カーネルが対応しているファイルシステムの一覧
  • /proc/interrupts ‐ CPUごとの割り込み回数
  • /proc/iomem ‐ I/Oメモリーマップ
  • /proc/ioports ‐ I/Oポートマップ
  • /proc/kallsyms ‐ カーネルの外部シンボル定義
  • /proc/kcore ‐ 物理メモリーを表現するもので、ELFコアファイル形式となっている
  • /proc/loadavg ‐ ロードアベレージなどの情報。最初の情報はuptime(1)とほぼ同様
  • /proc/locks ‐ ファイルロックの情報
  • /proc/meminfo ‐ メモリーの使用量に関する統計情報
  • /proc/modules ‐ モジュールの情報。lsmod(8)とほぼ同様
  • /proc/net ‐ ネットに関する情報を含むディレクトリ。中には様々なファイルがある
  • /proc/partitions ‐ パーティションブロックのアロケーション情報
  • /proc/self ‐ プロセス自分自身を指し、/proc/<自分のPID> へのシンボリックリンク
  • /proc/slabinfo ‐ カーネルキャッシュの情報
  • /proc/stat ‐ カーネル/システムの統計
  • /proc/swaps ‐ 使用中のスワップ領域の情報
  • /proc/sys ‐ sysctl(2)に関するシステムパラメーターが置かれるディレクトリ
  • /proc/tty ‐ TTYに関する情報が置かれるディレクトリ
  • /proc/uptime ‐ 起動してからの時間(uptime)とアイドル時間
  • /proc/version ‐ カーネルのバージョンを表わす文字列。uname(1)と似ているが書式は異なる
  • /proc/vmstat ‐ 仮想メモリーの情報
  • /proc/zoneinfo ‐ メモリーゾーン情報
用語の所属
ディレクトリ
関連する用語
procfs

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club