/procディレクトリを活用するLinux Hacks(2/4 ページ)

» 2008年03月04日 01時00分 公開
[Federico Kereki,Open Tech Press]
SourceForge.JP Magazine

/procディレクトリの内容

 /procディレクトリには仮想ディレクトリ/サブディレクトリがあり、ファイルは分野ごとに分類されている。ルートユーザーとしてコマンドラインで「ls /proc」を実行すると以下のような結果が表示される。


1     2432  3340  3715  3762  5441  815        devices      modules
129   2474  3358  3716  3764  5445  acpi       diskstats    mounts
1290  248   3413  3717  3812  5459  asound     dma          mtrr
133   2486  3435  3718  3813  5479  bus        execdomains  partitions
1420  2489  3439  3728  3814  557   dri        fb           self
165   276   3450  3731  39    5842  driver     filesystems  slabinfo
166   280   36    3733  3973  5854  fs         interrupts   splash
2     2812  3602  3734  4     6     ide        iomem        stat
2267  3     3603  3735  40    6381  irq        ioports      swaps
2268  326   3614  3737  4083  6558  net        kallsyms     sysrq-trigger
2282  327   3696  3739  4868  6561  scsi       kcore        timer_list
2285  3284  3697  3742  4873  6961  sys        keys         timer_stats
2295  329   3700  3744  4878  7206  sysvipc    key-users    uptime
2335  3295  3701  3745  5     7207  tty        kmsg         version
2400  330   3706  3747  5109  7222  buddyinfo  loadavg      vmcore
2401  3318  3709  3749  5112  7225  cmdline    locks        vmstat
2427  3329  3710  3751  541   7244  config.gz  meminfo      zoneinfo
2428  3336  3714  3753  5440  752   cpuinfo    misc

 数字の名前がついているディレクトリ(詳しくは後述)はそれぞれ、実行中のプロセスに対応している。またselfという特別なファイルもあり、これはカレントプロセスへのシンボリックリンクとなっている。仮想ファイルには、ハードウェア情報を提供するもの(/proc/cpuinfo、/proc/meminfo、/proc/interruptsなど)や、ファイル関連の情報を提供するもの(/proc/filesystemsや/proc/partitions)などがある。また/proc/sysの中には、カーネルの設定に関するファイルがある(これについても後述)。

 「cat /proc/meminfo」を実行すると例えば以下のような結果が表示される。

MemTotal:       483488 kB

MemFree:          9348 kB

Buffers:          6796 kB

Cached:         168292 kB

(……以下複数行省略……)


 前記の数字の幾つかは、「top」や「free」の実行結果にも表示されるものだ。実のところ、よく知られているさまざまなユーティリティは/procディレクトリにアクセスして情報を入手している。従って例えば使用中のカーネルのバージョンを知りたい場合には「uname -srv」を実行してもよいし、「cat /proc/version」を実行してその情報源を直接見てもよい。そのほかの興味深いファイルには次のようなものがある。

  • /proc/apm:(インストールされていれば)APM(Advanced Power Management)の情報を提供する
  • /proc/acpi:/proc/apmと似ているが、より新しいACPI(Advanced Configuration and Power Interface)の情報を大量に提供する。例えば「cat /proc/acpi/ac_adapter/AC/state」を実行すれば、「on line」または「off line」と表示されて、ノートPCがAC電源に接続されているかどうかを確認できる
  • /proc/cmdline:ブート時にカーネルに渡されたパラメータを表示する。わたしのマシンの場合であれば「root=/dev/disk/by-id/scsi-SATA_FUJITSU_MHS2040_NLA5T3314DW3-part3 vga=0x317 resume=/dev/sda2 splash=silent PROFILE=QuintaWiFi」などの情報が表示される。これによりルートファイルシステムが含まれるパーティーションや、使用しているVGAモードなどを知ることができる。なお最後のPROFILEはopenSUSEのSystem Configuration Profile Management(翻訳記事)に関するパラメータだ
  • /proc/cpuinfo:マシンのプロセッサ情報を提供する。例えばわたしのノートPCの場合、「cat /proc/cpuinfo」を実行すると以下のような内容が表示された

      processor       : 0

      vendor_id       : AuthenticAMD

      cpu family      : 6

      model           : 8

      model name      : Mobile AMD Athlon(tm) XP 2200+

      stepping        : 1

      cpu MHz         : 927.549

      cache size      : 256 KB


 前記は、0番の番号がつけられた、1GHz弱で走る、80686ファミリ(cpu familyの6は真ん中の数字を表わしている)のAMD Athlon XPプロセッサが1基あることを示している。

  • /proc/loadavg:プロセッサの平均負荷を示すファイルで、直近の1分間、5分間、15分間のCPUの使用状況や、現在実行中のプロセス数などの情報を表示する
  • /proc/stat:ブート時からの統計情報を表示する
  • /proc/uptime:マシンの起動時からの経過時間(単位:秒)とアイドル時間(単位:秒)の2つの数値だけが含まれる小さなファイル
  • /proc/devices:現在利用可能なすべてのキャラクタデバイスブロックデバイスを表示する。なお/proc/ideと/proc/scsiではIDEデバイスとSCSIデバイスについての情報がそれぞれ提供されている
  • /proc/ioports:キャラクタ/ブロックデバイスとのI/Oのやり取りを行うのに使用されるIOポートの範囲についての情報を提供する
  • /proc/dma:使用中のDMA(Direct Memory Access)チャネルを表示する
  • /proc/filesystems:カーネルがサポートしているファイルシステムの一覧を表示する。以下に例を示す。

      nodev   sysfs

      nodev   rootfs

      nodev   bdev

      nodev   proc

      nodev   cpuset

      (……複数行省略……)

      nodev   ramfs

      nodev   hugetlbfs

      nodev   mqueue

             ext3

      nodev   usbfs

             ext2

      nodev   autofs


左側の列はファイルシステムをブロックデバイスにマウントしているかどうかを示している。前記から、ext2とext3のパーティーションをマウントしていることが分かる。

  • /proc/mounts:マシン上でマウントされているすべてのファイルシステムを表示する(出力結果は/etc/mtabに似ている)。同様に、/proc/partitionsと/proc/swapsはそれぞれ、すべてのパーティーションとすべてのスワップ空間とを表示する
  • /proc/fs:/proc/fsには多くのサブディレクトリやファイルがあるが、とりわけNFS経由でファイルシステムをエクスポートしている場合に、共有されているファイルシステムとそのパーミッションとを示す/proc/fs/nfsd/exportsがある
  • /proc/net:ネットワーク関連の情報源として/proc/netに勝るものはないだろう。本稿で/proc/net内にあるすべてのファイルを説明することはできないが、代表的なものを挙げると、/dev(ネットワークデバイス)、さまざまなiptables(ファイアウォール)関連のファイル、ネットワーク/ソケットについての統計情報、ワイヤレス関連の情報などがある。

 そのほかにも、RAM関連のファイルが幾つかある。/proc/meminfoについてはすでに述べたが、マシン上のRAMメモリがどのように使用されているかを表示する/proc/iomemや、マシン上の物理RAMを表わす/proc/kcoreなどがある。なおほかの仮想ファイルとは違って/proc/kcoreはRAMと同じ容量(とわずかなオーバーヘッド分の容量)の大きさがあるように表示される(ただしこのファイルはバイナリのため、画面が変になってしまう恐れがあるためcatを使って読もうとするのはやめた方がよいだろう)。最後に、/proc/interrupts、/proc/irq、/proc/pci(全PCIデバイスのリスト)、/proc/busなどのハードウェア関連のファイルやディレクトリがあるが、含まれているのは非常に細部の専門的な情報なので、ほとんどのユーザーにとって必要になることはないだろう。

Copyright © 2010 OSDN Corporation, All Rights Reserved.

注目のテーマ