6.13 /procファイルシステム

/procファイルシステムは、カーネルにより重要な情報が仮想ファイルの形式で保持される疑似ファイルシステムです。たとえば、次のコマンドを使用すると、CPUのタイプを確認できます。

ester@linux:~> cat /proc/cpuinfo
processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 6
model           : 8
model name      : AMD Athlon(tm) XP 2400+
stepping        : 1
cpu MHz         : 2009.343
cache size      : 256 KB
fdiv_bug        : no
[...]
  

割り込みの割り当てと使用は、次のコマンドでクエリできます。

tester@linux:~> cat /proc/interrupts
           CPU0
  0:    3577519          XT-PIC  timer
  1:        130          XT-PIC  i8042
  2:          0          XT-PIC  cascade
  5:     564535          XT-PIC  Intel 82801DB-ICH4
  7:          1          XT-PIC  parport0
  8:          2          XT-PIC  rtc
  9:          1          XT-PIC  acpi, uhci_hcd:usb1, ehci_hcd:usb4
 10:          0          XT-PIC  uhci_hcd:usb3
 11:      71772          XT-PIC  uhci_hcd:usb2, eth0
 12:     101150          XT-PIC  i8042
 14:      33146          XT-PIC  ide0
 15:     149202          XT-PIC  ide1
NMI:          0
LOC:          0
ERR:          0
MIS:          0

重要なファイルとその内容の一部は次のとおりです。

/proc/devices

使用可能なデバイス

/proc/modules

ロードされたカーネルモジュール

/proc/cmdline

カーネルコマンドライン

/proc/meminfo

メモリ使用状況に関する詳細情報

/proc/config.gz

gzip-現在実行中のカーネルの圧縮設定ファイル

詳細は、テキストファイル/usr/src/linux/Documentation/filesystems/proc.txtにあります。現在実行中のプロセスについては、/proc/NNNディレクトリで確認できます。この場合、NNNは関連プロセスのプロセスID (PID)です。/proc/self/を指定すると、プロセスとその特有の特性を確認できます。

tester@linux:~> ls -l /proc/self
lrwxrwxrwx 1 root root 64 2006-01-09 13:03 /proc/self -> 5356
tester@linux:~> ls -l /proc/self/
total 0
dr-xr-xr-x 2 tester users 0 2006-01-09 17:04 attr
-r-------- 1 tester users 0 2006-01-09 17:04 auxv
-r--r--r-- 1 tester users 0 2006-01-09 17:04 cmdline
lrwxrwxrwx 1 tester users 0 2006-01-09 17:04 cwd -> /home/tester
-r-------- 1 tester users 0 2006-01-09 17:04 environ
lrwxrwxrwx 1 tester users 0 2006-01-09 17:04 exe -> /bin/ls
dr-x------ 2 tester users 0 2006-01-09 17:04 fd
-rw-r--r-- 1 tester users 0 2006-01-09 17:04 loginuid
-r--r--r-- 1 tester users 0 2006-01-09 17:04 maps
-rw------- 1 tester users 0 2006-01-09 17:04 mem
-r--r--r-- 1 tester users 0 2006-01-09 17:04 mounts
-rw-r--r-- 1 tester users 0 2006-01-09 17:04 oom_adj
-r--r--r-- 1 tester users 0 2006-01-09 17:04 oom_score
lrwxrwxrwx 1 tester users 0 2006-01-09 17:04 root -> /
-rw------- 1 tester users 0 2006-01-09 17:04 seccomp
-r--r--r-- 1 tester users 0 2006-01-09 17:04 smaps
-r--r--r-- 1 tester users 0 2006-01-09 17:04 stat
-r--r--r-- 1 tester users 0 2006-01-09 17:04 statm
-r--r--r-- 1 tester users 0 2006-01-09 17:04 status
dr-xr-xr-x 3 tester users 0 2006-01-09 17:04 task
-r--r--r-- 1 tester users 0 2006-01-09 17:04 wchan
  

実行可能ファイルとライブラリのアドレス割り当ては、mapsファイルに含まれています。

tester@linux:~> cat /proc/self/maps
08048000-0804c000 r-xp 00000000 03:03 17753      /bin/cat
0804c000-0804d000 rw-p 00004000 03:03 17753      /bin/cat
0804d000-0806e000 rw-p 0804d000 00:00 0          [heap]
b7d27000-b7d5a000 r--p 00000000 03:03 11867      \
 /usr/lib/locale/en_GB.utf8/LC_CTYPE
b7d5a000-b7e32000 r--p 00000000 03:03 11868      \
 /usr/lib/locale/en_GB.utf8/LC_COLLATE
b7e32000-b7e33000 rw-p b7e32000 00:00 0
b7e33000-b7f45000 r-xp 00000000 03:03 8837       /lib/libc-2.3.6.so
b7f45000-b7f46000 r--p 00112000 03:03 8837       /lib/libc-2.3.6.so
b7f46000-b7f48000 rw-p 00113000 03:03 8837       /lib/libc-2.3.6.so
b7f48000-b7f4c000 rw-p b7f48000 00:00 0
b7f52000-b7f53000 r--p 00000000 03:03 11842      \
 /usr/lib/locale/en_GB.utf8/LC_NUMERIC
[...]
b7f5b000-b7f61000 r--s 00000000 03:03 9109       \
 /usr/lib/gconv/gconv-modules.cache
b7f61000-b7f62000 r--p 00000000 03:03 9720       \
 /usr/lib/locale/en_GB.utf8/LC_IDENTIFICATION
b7f62000-b7f76000 r-xp 00000000 03:03 8828       /lib/ld-2.3.6.so
b7f76000-b7f78000 rw-p 00013000 03:03 8828       /lib/ld-2.3.6.so
bfd61000-bfd76000 rw-p bfd61000 00:00 0          [stack]
ffffe000-fffff000 ---p 00000000 00:00 0          [vdso]
  

6.13.1 procinfo

/procファイルシステムからの重要情報のサマリを確認するには、コマンドprocinfoを使用します。

 
tester@linux:~> procinfo
Linux 2.6.15-rc5-git3-2-default (geeko@buildhost) (gcc 4.1.0 20051129) #1 Wed Dec 14 13:10:38 UTC 2005 1CPU [linux.suse.de]

Memory:      Total        Used        Free      Shared     Buffers 
Mem:        515584      509472        6112           0       73024 
Swap:       658656           0      658656

Bootup: Mon Jan  9 12:59:08 2006    Load average: 0.10 0.04 0.05 1/86 5406

user  :00:02:070.98   0.8%  page in :442638  disk 1:20125r   13476w
nice  :00:02:200.91   0.9%  page out:134950
system:0:00:42.93   0.3%  page act:70577 
IOwait:0:01:25.40   0.6%  page dea:11696 
hw irq:0:00:08.94   0.1%  page flt:1423622 
sw irq:00:00:010.29   0.0%  swap in :0 
idle  :04:06:300.54  97.3%  swap out:0 
uptime:4:13:20.72         context :    3813145

irq  0:   3799268 timer                 irq  8:2 rtc
irq  1:       130 i8042                 irq  9:1 acpi, uhci_hcd:usb1,
irq  2:         0 cascade [4]           irq 10:0 uhci_hcd:usb3
irq  3:         8                       irq 11:75905 uhci_hcd:usb2, eth0
irq  4:         8                       irq 12:101150 i8042
irq  5:    564535 Intel 82801DB-ICH4    irq 14:33733 ide0
irq  6:         9                       irq 15:157045 ide1
irq  7:         1 parport0 [3]

すべての情報を表示するには、パラメータ-aを使用します。-nNパラメータを指定すると、情報がN秒間隔で更新されます。この場合、プログラムを終了するにはQキーを押します。

デフォルトでは、累積値が表示されます。パラメータ-dを入力すると、別の値が作成されます。procinfo -dn5を入力すると、過去5秒間に変化した値が表示されます。