第 5章proc ファイルシステム

Linuxカーネルには2つの主要な機能があります:コンピューターへの物理デバイスのアクセスを制御する事と、 いつどのようにこれらのデバイスを相互に作用させるかスケジュールする事です。 /procディレクトリには、カーネルの現在の状態を示す特別なファイルの階層が 含まれています。— これを利用してアプリケーションやユーザーがカーネルのシステム情報を見る ことが出来ます

/procディレクトリでは、システムハードウェアや現在実行中のプロセスの豊富な 詳細情報があります。さらには、/procディレクトリツリーの中の幾つかのファイルは ユーザーやアプリケーションが操作可能で、カーネルへ設定変更について伝えることが出来ます。

5.1. 仮想ファイルシステム

Linuxでは、すべてがファイルとして保存されます。殆どのユーザーは2つの主要なファイルタイプ: テキストファイルとバイナリファイルに慣れ親しんでいると思われます。しかし、/proc/ ディレクトリには、仮想ファイルと言うもう1つのファイルあります。この理由で、 /proc/はよく仮想ファイルシステムと呼ばれます。

これらの仮想ファイルは独特の性質を持ちます。殆どはサイズがゼロバイトでリストされ、 1つを表示すると、それは大量の情報を含んでいることがあります。さらには、仮想ファイル 上の殆どの時刻と日付の設定が現在の時刻と日付を示しますのでこれが、常時更新されて いる事実を現しています。

/proc/interrupts/proc/meminfo/proc/mounts/proc/partitionsなどの仮想ファイルは分刻のシステムのハードウェア状況を提供してくれます。 その他に、/proc/filesystems/proc/sys/ディレクトリの様にシステムの 設定ファイルとインターフェイスを提供します。

組織での使用目的の為に、同じような課題の情報を含むファイルは仮想ディレクトリと サブディレクトリにグループ化されます。例えば、/proc/ide/は すべての物理IDEデバイスの情報を含んでいます。同じ様にプロセスディレクトリは システムの各実行中の情報を含んでいます。

5.1.1. 仮想ファイルの表示

catmorelessコマンドを /proc内のファイルと共に使用して、システムについての膨大な情報に 即座にアクセスできます。たとえば、コンピュータで使用しているCPUの見る場合は、 cat /proc/cpuinfoと入力すると、以下のような表示が得られます:

processor	: 0
vendor_id	: AuthenticAMD
cpu family	: 5
model		: 9
model name	: AMD-K6(tm) 3D+ Processor
stepping	: 1
cpu MHz		: 400.919
cache size	: 256 KB
fdiv_bug	: no
hlt_bug		: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 1
wp		: yes
flags		: fpu vme de pse tsc msr mce cx8 pge mmx syscall 3dnow k6_mtrr
bogomips	: 799.53

/procファイルシステム内の様々な仮想ファイルを見ると、情報の一部は 意味が分かります。一部は人間が読めないコードになっています。これが、ユーティリティが存在する理由で、 それによって、これらの仮想ファイルからデータが抽出され、わかりやすく表示されます。 そのようなユーティリティの例としては、lspciapmfreeそれに、topなどがあります。

注意注意
 

/procディレクトリの仮想ファイルの一部はrootユーザーのみ読み取り可能として設定されています。

5.1.2. 仮想ファイルの変更

一般的なルールとして、/proc内の多くの仮想ファイルは読み取り専用です。 しかし、カーネルの設定で、調整できるファイルもあります。特に、/proc/sys/ サブディレクトリのファイルが調整可能です。

仮想ファイルの値を変更するためには、echoコマンドと>記号を 使って、ファイルに新しい値をリダイレクトします。例えば、ホスト名を急いで変更するには、以下のように入力します:

echo www.example.com > /proc/sys/kernel/hostname 

他のファイルはバイナリ又はブール値のスイッチとして作用します。例えば、cat /proc/sys/net/ipv4/ip_forwardと 入力すると、0または1が返って来ます。 0は、カーネルがネットワークパケットをフォワードしないという事を示します。 echoコマンドを使って、ip_forwardファイルを1に 変更すると、すぐにパケットフォワードが起動します。

ティップヒント
 

/proc/sys/サブディレクトリの設定を変更する為に使用するもう1つの コマンドは、/sbin/sysctlです。このコマンドに関する詳細は、項5.4で 御覧下さい。

/proc/sys/内の利用できるカーネル設定ファイルのリストは、 項5.3.9を参照してください。