第 4章/procファイルシステム

/procディレクトリには、実行中のLinuxカーネルの最新状態を示すウィンドウとなる仮想ファイルが入っています。これにより、システム内のカーネルの状態を効果的に示す膨大な情報を見ることができます。さらに、/procディレクトリを使用すると、特定の設定の変更内容をカーネルに伝えることができます。

仮想ファイルシステム

Linuxでは、すべてのものがファイル内に保存されています。ユーザーの大部分はテキストファイルとバイナリファイルという基本的な2つのファイルタイプについて熟知していることと思います。しかし、/procディレクトリにはハードディスク、CD-ROM、その他ユーザーのシステムに接続されている物理的記憶装置(論議の余地はありますが、RAMは除く)に関連付けられたファイルシステムのいずれにも属さないファイルが含まれています。こうしたファイルはむしろ、コンパイルされたときにLinuxカーネル内で有効か、あるいは無効にされる仮想ファイルシステムの一部といえます。

デフォルトでは、Red Hat Linuxシステムが起動すると、/etc/fstab内のある行が/procファイルシステムのマウントを行います。

none         /proc       proc       defaults       0 0

/procが現在マウントされているかどうかは、引数なしでmountコマンドを入力することで判断することができます。これにより、現在マウントされているものすべてが表示されます。/procがマウントされている場合には、一覧の中に次のような行が表示されるはずです。

none on /proc type proc (rw)

/procを手動でマウントする場合は、次のコマンドを入力します。

mount -t proc proc /proc

/proc仮想ファイルシステムはLinuxカーネルの設定のスイッチです。デフォルトでは有効になっています。何らかの理由によりシステム上で完全に /procを無効にするには、カーネルを再構築する際に、configmenuconfigxconfigファイルシステム設定セクション内の/proc file system supportを選択解除します。そして、/etc/fstab/proc行をコメントアウトして、マウントされないようにします。

仮想ファイルシステムの/procを理解する最もよい方法は、ディレクトリのファイルの一覧を表示することです。この一覧の一部を次に掲載します。

[root@bleach /]# ls -l /proc
-r--r--r--    1 root     root            0 May  3 11:42 cmdline
-r--r--r--    1 root     root            0 May  3 11:42 cpuinfo
-r--r--r--    1 root     root            0 May  3 11:42 devices
-r--r--r--    1 root     root            0 May  3 11:42 dma
dr-xr-xr-x    2 root     root            0 May  3 11:42 driver
-r--r--r--    1 root     root            0 May  3 11:42 execdomains
-r--r--r--    1 root     root            0 May  3 11:42 fb
-r--r--r--    1 root     root            0 May  3 11:42 filesystems
[root@bleach /]#

/proc仮想ファイルにはおもしろい性質があります。まず、大部分のファイルサイズは0バイトです。しかし、ファイルが表示されると、多くの情報が表示されます。さらに、大部分の日時設定は現在の日時を反映します。つまり、常に更新されているということです。

さまざまなプログラムで/procファイルシステムを使用して、パフォーマンスの向上と機能の充実のため、システムのパラメータを検出しています。

さらに、システム管理者は/procをカーネルの状態、コンピュータの属性、個々のプロセスの状態などについての情報にアクセスする簡単な方法として使用できます。interruptsmeminfomountspartitionsなどこのディレクトリ内の大部分のファイルは、システムの最新の環境を提供します。簡単にするために、類似トピックの情報が入っているファイルは/proc/ideなどの仮想ディレクトリとサブディレクトリにグループ化されています。

仮想ファイルの表示

catmorelessコマンドを/proc内のファイルと共に使用して、システムについての膨大な情報に即座にアクセスできます。たとえば、コンピュータ上の現在のメモリレジスタの割り当てを表示する場合は、次のように入力します。

[root@bleach /]# cat /proc/iomem
00000000-0009fbff : System RAM
0009fc00-0009ffff : reserved
000a0000-000bffff : Video RAM area
000c0000-000c7fff : Video ROM
000f0000-000fffff : System ROM
00100000-03ffcfff : System RAM
  00100000-002557df : Kernel code
  002557e0-0026c80b : Kernel data
03ffd000-03ffefff : ACPI Tables
03fff000-03ffffff : ACPI Non-volatile Storage
dc000000-dfffffff : S3 Inc. ViRGE/DX or /GX
e3000000-e30000ff : Lite-On Communications Inc LNE100TX
  e3000000-e30000ff : eth0
e4000000-e7ffffff : Intel Corporation 440BX/ZX - 82443BX/ZX Host bridge
ffff0000-ffffffff : reserved
[root@bleach /]# 

あるいは、(もっと便利な機能として)、接続先が知らないコンピュータで、そのCPUタイプと速度が知りたい場合は、次のコマンドを入力します。

[root@bleach /]# cat /proc/cpuinfo
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 6
model name	: Celeron (Mendocino)
stepping	: 0
cpu MHz		: 416.537
cache size	: 128 KB
fdiv_bug	: no
hlt_bug		: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 2
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov
bogomips	: 830.66
[root@bleach ide]# 

このように、情報の一部は意味がわかるものですが、一部はよくわからないコードになっています。/procファイルの一部は、解説がなければわかりません。多くの場合、freetopなどのユーティリティがシステムにあり、それによって、これらのファイルからデータが抽出され、わかりやすく表示されます。

仮想ファイルのもう1つのおもしろいい性質は、moreコマンドを使用して表示するとわかります。これにより、現在表示しているドキュメントのパーセントが表示され、ファイル内での位置がわかります。このパーセントの数字は、長いファイル内をナビゲーションしていくと増加します。ただし、/proc仮想ファイルを表示している場合は、パーセントは変化せず、常に0%のままです。

/procのファイルの一部はルートユーザーのみ読み取り可能として設定されているので、読み取るためにはルートユーザーになる必要があります。

警告警告
 

/prockcoreファイルを表示しないようにしてください。この仮想ファイルにはカーネルのメモリのイメージが入っているので、ファイルの内容が端末に表示されるとおかしくなります。正しいコマンド行プロンプトに戻るには、Ctrl-Cキーを押したあと、resetを入力してください。