/proc ファイルシステムで参照可能な代表的な仮想ファイルを解説します。
このディレクトリには、実行中のプロセスに対応する非常に多くのサブディレクトリ、仮想ファイルが存在します。以下の例は、プロセス ID が 2363 の status ファイルを表示したものです。
# cat /proc/2363/status Name: httpd State: S (sleeping) SleepAVG: 88% Tgid: 2363 Pid: 2363 PPid: 1 TracerPid: 0 Uid: 0 0 0 0 Gid: 0 0 0 0 FDSize: 32 Groups: 0 1 2 3 4 6 10 VmSize: 22088 kB VmLck: 0 kB VmRSS: 10768 kB VmData: 3436 kB VmStk: 708 kB VmExe: 284 kB VmLib: 16380 kB StaBrk: 08095000 kB Brk: 08b9c000 kB StaStk: bff90d10 kB ExecLim: b8000000 Threads: 1 ...略 |
以下のように確認するとプロセス ID 2363 のプロセスは、httpd であることがわかります。/proc/2363 以下にある仮想ファイルはこのプロセスに関する情報です。
# ps --pid 2363 PID TTY TIME CMD 2363 ? 00:00:00 httpd |
また、このディレクトリの所有者は、プロセスの所有ユーザー、所有グループになっています。Turbolinux 10 Server の httpd は、初期状態では、apache ユーザー、apache グループが所有します。以下のようにプロセス ID のディレクトリも同ユーザー、グループに所有されています。
# ls -ld /proc/2366 dr-xr-xr-x 3 apache apache 0 8月 10 19:49 /proc/2366/ |
プロセスが存在する間はこのディレクトリも存在しており、cmdline(コマンドライン)、environ(環境変数)、fd/(ファイル記述子)、mem(アドレス空間)、root(/)、statm(ページ割り当て状態)、cwd(カレントワーキングディレクトリ)、exe(実行プログラムへのリンク)、maps(マップされているメモリ領域とアクセス制限)、mounts(マウント状態)、stat(プロセスの状態、ps コマンドで利用される)、statm(ページ中のメモリ状態)、status(プロセスの状態、stat と statm を人間のわかりやすいフォーマットで表示)などの仮想ファイルから様々な情報を得ることができます。
例えば、プロセスの起動コマンドは以下のように確認できます。
# cat /proc/2366/cmdline /usr/sbin/httpd |
以下のように、実行プログラムへのリンクが存在していることもわかります。
# ls -l /proc/2366/exe lrwxrwxrwx 1 root root 0 8月 11 09:37 /proc/2366/exe -> /usr/sbin/httpd.prefork* |
APM(Advanced Power Management)のバージョンとバッテリの情報を出力します。以下の例は、AC 電源を接続せずに PC バッテリを使用した状態での出力結果です。
# cat /proc/apm 1.16ac 1.2 0x02 0x00 0x00 0x01 96% 117 min |
APM BIOS と Linux APM ドライバのバージョンがそれぞれ 1.2 と 1.16ac で、バッテリの残量が 96%、残り時間が 117 分であることがわかります。以下のように apm -v コマンドからこの値は参照されます。
# apm -v APM BIOS 1.2 (kernel driver 1.16ac) AC off-line, battery status high: 96% (1:57:00) |
AC 電源に接続している場合は、以下のように表示されます。
# cat /proc/apm 1.16ac 1.2 0x02 0x01 0x00 0x01 100% 101 min # apm -v APM BIOS 1.2 (kernel driver 1.16ac) AC on-line, battery status high: 100% (1:41:00) |
バッテリのない PC の場合は以下のようになります。
# cat /proc/apm 1.16ac 1.2 0x03 0x01 0xff 0x80 -1% -1 ? # apm -v APM BIOS 1.2 (kernel driver 1.16ac) AC on-line, no system battery |
このディレクトリ以下に各種バスに関する様々な情報があります。PCI 、USB 、PC カードなどのバスを搭載している場合には、このディレクトリ以下の仮想ファイルで情報を確認することができます。以下の例は、PC カードのドライバに関する情報です。
# cat /proc/bus/pccard/drivers ide-cs 1 0 |
以下の例は、USB デバイスに関する情報です。
# cat /proc/bus/usb/devices T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2 B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0 D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0000 ProdID=0000 Rev= 2.06 S: Manufacturer=Linux 2.6.7-0.30 uhci_hcd S: Product=UHCI Host Controller S: SerialNumber=0000:00:14.2 C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms |
/proc/bus 以下はハードウェアの環境などにより大きく異なります。搭載するバスごとに、input、usb、pci、usb、isa などのディレクトリが存在し、そのディレクトリに 001 や 00 などの数字のディレクトリ(バイナリ)や、dirvers、device といったディレクトリも存在します。
システム起動時に渡されたカーネルパラメータの情報を出力します。以下の例では、/(ルート)ファイルシステムとしてマウントするパーティションに /dev/hda2 が指定されていることがわかります。
# cat /proc/cmdline root=0302 |
CPU に関するの情報を出力します。標準的な出力例を以下に示します。
# cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 8 model name : Pentium III (Coppermine) stepping : 3 cpu MHz : 697.084 cache size : 256 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 pat p se36 mmx fxsr sse bogomips : 1376.25 |
processor は、プロセッサ番号です。1 CPU の場合は 0 になります。cpu family は、CPU のアーキテクチャが表示されます。他にも、model name(CPU の名称)、cpu MHz(処理速度)といった情報や、bogomips (カーネルの初期化時に計算されるシステム定数)などが出力されます。 SMP マシンの場合には、各 CPU ごとに情報が出力されます。
デバイスのメジャー番号とデバイス名の情報を出力します。標準的な出力例を以下に示します。
# cat /proc/devices | less Character devices: 1 mem 2 pty 3 ttyp 4 /dev/vc/0 4 tty 4 ttyS 5 /dev/tty 5 /dev/console 5 /dev/ptmx 7 vcs 10 misc 13 input 14 sound 29 fb 116 alsa 128 ptm 136 pts 180 usb Block devices: 1 ramdisk 3 ide0 7 loop 9 md 22 ide1 254 mdp |
データの受け渡しを特定サイズのブロック単位で行えるデバイスがブロックデバイスです。バッファを利用できるため効率よくデータの書き込みが行えます。一方、バッファリングなしで連続した文字単位の受け渡しを行うのがキャラクタデバイスです。ls -l コマンドで、1 桁目に表示される文字が b のデバイスはブロックデバイスで、c のデバイスはキャラクタデバイスです。また、通常ファイルでサイズが表示される部分には、デバイスのメジャー番号とマイナー番号が表示されます。/dev/hda1 の場合は、メジャー番号 3 とマイナー番号 1 になります。
# ls -l /dev/hda1 brw-rw---- 1 root disk 3, 1 7月 27 19:49 /dev/hda1 # ls -l /dev/tty1 crw------- 1 root tty 4, 1 8月 10 20:07 /dev/tty1 |
ISA DMA(direct memory access)チャネルの割り当て情報を出力します。標準的な出力例を以下に示します。
# cat /proc/dma 4: cascade |
このディレクトリには、カーネルの使用するドライバに関する情報があります。以下の例は、Real Time Clock(マザーボード上にある時計専用のチップで、PC の電源断の間も内蔵電池から電源を供給し動作する)に関する情報です。
# cat /proc/driver/rtc rtc_time : 19:54:12 rtc_date : 2004-08-11 rtc_epoch : 1900 alarm : 17:17:00 DST_enable : no BCD : yes 24hr : yes square_wave : no alarm_IRQ : no update_IRQ : no periodic_IRQ : no periodic_freq : 1024 batt_status : okay |
環境により異なりますが、他に USB コントローラ uhci に関する情報などがあります。
カーネルが現在サポートしている実行ドメインとパーソナリティの範囲に関する情報を出力します。標準的な出力例を以下に示します。
# cat /proc/execdomains 0-0 Linux [kernel] |
Linux は、プロセスごとに複数の実行ドメイン(domain)をサポートします。これは、パーソナリティ(personality)により指定され、シグナル番号とシグナルの割り付けやカーネルの提供するシステムコールを決定します。実行するプロセスのパーソナリティを変更することで、他の UNIX ライクな OS のバイナリで使用されるシステムコールの処理方法に対応が可能になります。
フレームバッファデバイスに関する情報を出力します。標準的な出力例を以下に示します。
0 VESA VGA |
フレームバッファデバイスとは、ビデオカードごとに異なるハードウェアの違いを吸収するために抽象化した仮想デバイスです。搭載するビデオカードにあったフレームバッファ用のドライバがロードされているとき情報が表示されます。上記の例は VESA(Video Electronics Standards Association)ドライバです。
カーネルのサポートするファイルシステムの情報を出力します。標準的な出力例を以下に示します。
# cat /proc/filesystems
nodev sysfs
nodev rootfs
nodev bdev
nodev proc
nodev sockfs
nodev futexfs
nodev tmpfs
nodev pipefs
nodev eventpollfs
nodev devpts
ext3
ext2
nodev ramfs
nodev hugetlbfs
nodev mqueue
nodev usbfs
nodev usbdevfs
ntfs |
1 列目に nodev と表示されているファイルシステムは、ブロックデバイスにマウントされていないことを表します。表示されていないファイルシステムはマウントされています。また、2 列目にはファイルシステムの名前が表示されます。mount コマンドはファイルシステムのタイプが指定されないとき、このリストを探してファイルシステムを決定しようとします。
このディレクトリ以下に IDE デバイスに関する情報があります。以下の例は、IDE デバイスのドライバに関する情報です。
# cat /proc/ide/drivers ide-disk version 1.18 |
他に ide0、ide1 などのチャネルやそれに取り付けられたデバイスごとのディレクトリがあり、cache(キロバイト単位のバッファサイズ)、capacity(セクタ数)、driver(ドライバのバージョン)、geometry(物理ジオメトリと論理ジオメトリ)、identify(16 進数表記)、media(メディアのタイプ)、model(製造者のモデル番号)、settings(ドライブの設定)、smart_thresholds(16 進数表記)、smart_values(16 進数表記)などの仮想ファイルから様々な情報を得ることができます。デバイスに関するこれらの情報をわかりやすいフォーマットで表示するコマンドに hdparm があります。
# hdparm /dev/hda /dev/hda: multcount = 16 (on) IO_support = 0 (default 16-bit) unmaskirq = 0 (off) using_dma = 1 (on) keepsettings = 0 (off) readonly = 0 (off) readahead = 256 (on) geometry = 1323/240/63, sectors = 20010816, start = 0 |
IRQ ごとの割り込み回数の情報を出力します。標準的な出力例を以下に示します。
# cat /proc/interrupts
CPU0
0: 160138783 XT-PIC timer
1: 15744 XT-PIC i8042
2: 0 XT-PIC cascade
8: 1 XT-PIC rtc
11: 839639 XT-PIC uhci_hcd, eth0, eth1
12: 15373 XT-PIC i8042
14: 261068 XT-PIC ide0
15: 3 XT-PIC ide1
NMI: 0
LOC: 0
ERR: 0
MIS: 0 |
1 列目が IRQ 番号(割り込み要求番号)です。IRQ 番号は、PC に接続された各種機器が CPU に処理要求を通知する際の識別番号です。以降の列は、割り込み数(SMP システムの場合は、CPU0、CPU1 のように各 CPU ごとに表示されます。)、割り込みタイプ、デバイス名です。
I/O メモリマップに関する情報を出力します。標準的な出力例を以下に示します。
# cat /proc/iomem 00000000-0009fbff : System RAM 0009fc00-0009ffff : reserved 000a0000-000bffff : Video RAM area 000c0000-000c7fff : Video ROM 000f0000-000fffff : System ROM 00100000-0fffffff : System RAM 00100000-002ac55b : Kernel code 002ac55c-00346dff : Kernel data 40000000-40ffffff : PCI Bus #01 40000000-40ffffff : 0000:01:00.0 41000000-4100007f : 0000:00:10.0 41000000-4100007f : via-rhine 42000000-42ffffff : PCI Bus #01 42000000-42ffffff : 0000:01:00.0 44000000-47ffffff : 0000:00:00.0 fffc0000-ffffffff : reserved |
1 列目はメモリレジスタ、2 列目はメモリの種類を表します。
I/O ポートに関する情報を出力します。標準的な出力例を以下に示します。
# cat /proc/ioports | less 0000-001f : dma1 0020-0021 : pic1 0040-005f : timer 0060-006f : keyboard 0070-0077 : rtc 0080-008f : dma page reg 00a0-00a1 : pic2 00c0-00df : dma2 00f0-00ff : fpu 0170-0177 : ide1 01f0-01f7 : ide0 02f8-02ff : serial 0376-0376 : ide1 03c0-03df : vga+ 03f6-03f6 : ide0 03f8-03ff : serial 0cf8-0cff : PCI conf1 1000-107f : 0000:00:10.0 1000-107f : via-rhine 1080-10bf : 0000:00:0f.0 1080-10bf : 0000:00:0f.0 10c0-10df : 0000:00:0e.0 省略... |
1 列目は予約された I/O ポートアドレス、2 列目はデバイスを表します。I/O ポートアドレスとは、CPU が各入出力機器とデータをやりとりするための窓口を表します。
物理メモリ内をコアファイル形式で出力します。出力サイズは物理メモリサイズに 4 キロバイトを加えたものになります。これは各デバッガなどによって使用されるもので、cat やその他のコマンドで表示はしないようにしてください。アクセスには、スーパーユーザーの権限が必要です。
syslog システムコールによりカーネルメッセージを読み込む代わりに使用できる情報です。syslog プロセスが稼働中には読み込むべきではありません。アクセスには、スーパーユーザーの権限が必要です。dmesg コマンドで得られる値です。
カーネルのスタック以外のすべてのシンボル定義に関する情報を出力します。モジュールから利用されるシンボル定義だけでなく、デバッグで利用されるカーネルのシンボル定義を出力します。標準的な出力例を以下に示します。
# cat /proc/kallsyms | less c0100240 t _stext c0100240 t calibrate_delay c0100240 t stext c0100360 t rest_init c0100390 t do_pre_smp_initcalls c01003a0 t run_init_process c01003d0 t init c01004b0 t early_param_test c01004e0 t early_setup_test c0100500 t huft_build c01009f0 t huft_free c0100a20 t inflate_codes c0100f60 t inflate_stored c0101100 t inflate_fixed c0101240 t inflate_dynamic c0101820 t inflate_block c0101920 t inflate c01019d0 t makecrc c0101a50 t gunzip c01020d0 t huft_build c01025c0 t huft_free c01025f0 t inflate_codes c0102ac0 t inflate_stored ...省略 |
ロードアベレージに関する情報を出力します。標準的な出力例を以下に示します。
2.27 3.59 1.75 1/91 14286 |
1、5、15 分あたりの CPU 使用率、実行中のプロセス/総プロセス数、直近に実行されたプロセス ID を表示します。uptime コマンドで得られる値です。
# uptime 11:55:54 up 1 day, 21:33, 7 users, load average: 2.27, 3.59, 1.75 |
現在のファイルロックとリースに関する情報を出力します。標準的な出力例を以下に示します。
# cat /proc/locks 1: POSIX ADVISORY WRITE 2648 03:08:32068 0 EOF 2: FLOCK ADVISORY WRITE 766 03:08:313157 0 EOF |
環境や使用状況により値が異なります。1 行に 1 つのファイルロックに関する情報を出力します。1 列目には識別する番号が、2 列目には POSIX(POSIX スタイル)または、FLOCK(UNIX ファイルロックスタイル)が、3 列目にはロック中の他ユーザーからのアクセスについて ADVISORY(アクセス可)、MANDATORY(アクセス不可)が、次にロックタイプにより WRITE または READ が、続いてそのプロセスのプロセス ID、その後には :(コロン)で区切られてメジャー番号:マイナー番号:inode 番号が出力されます。
物理メモリと SWAP 領域に関する情報を出力します。標準的な出力例を以下に示します。
# cat /proc/meminfo | less MemTotal: 256608 kB MemFree: 69720 kB Buffers: 4476 kB Cached: 62208 kB SwapCached: 4104 kB Active: 103432 kB Inactive: 33124 kB HighTotal: 0 kB HighFree: 0 kB LowTotal: 256608 kB LowFree: 69720 kB SwapTotal: 521600 kB SwapFree: 499292 kB Dirty: 0 kB Writeback: 0 kB Mapped: 99176 kB Slab: 45444 kB Committed_AS: 440628 kB PageTables: 2380 kB VmallocTotal: 770040 kB VmallocUsed: 1512 kB VmallocChunk: 768468 kB HugePages_Total: 0 HugePages_Free: 0 Hugepagesize: 4096 kB |
この例では、約 256 メガバイトの物理メモリを搭載し(約 68 メガバイトの空き容量)、約 512 メガバイトのスワップ領域(約 487 メガバイトの空き容量)があることがわかります。free コマンドで得られる値です。
# free
total used free shared buffers cached
Mem: 256608 186924 69684 0 4928 62208
-/+ buffers/cache: 119788 136820
Swap: 521600 22304 499296 |
RAID に関する情報を出力します。以下の例は、ソフトウェア RAID が正常に動作している場合の出力例です。
# cat /proc/mdstat
Personalities : [raid1]
read_ahead 1024 sectors
md0 : active raid1 sdb1[1] sda1[0]
31872 blocks [2/2] [UU]
unused devices: <none> |
RAID が構築されていない場合は、以下のように何も表示されません。
# cat /proc/mdstat Personalities : unused devices: <none> |
現在マウントされているファイルシステムの情報を出力します。標準的な出力例を以下に示します。
# cat /proc/mounts rootfs / rootfs rw 0 0 /dev/root / ext3 rw 0 0 /proc /proc proc rw,nodiratime 0 0 usbfs /proc/bus/usb usbfs rw 0 0 /dev/hda6 /boot ext2 rw 0 0 /dev/hda5 /mnt/winnt1 ntfs ro,noatime,nodiratime,uid=0,gid=0,umask=022,nls=euc-jp,errors=continue,mft_zone_multiplier=1 0 0 none /dev/pts devpts rw 0 0 sysfs /sys sysfs rw 0 0 |
1 列目にはマウント対象のファイルシステム、2 列目にマウントポイント、3 列目はファイルシステムのタイプ、4 列目には、rw(読み書き可能)、ro(読み込みのみ)が表示されます。
ロードされているモジュールの情報を出力します。標準的な出力例を以下に示します。
# cat /proc/modules iptable_filter 2176 0 - Live 0xd0954000 ip_tables 14976 1 iptable_filter, Live 0xd0957000 snd_pcm_oss 45352 0 - Live 0xd097c000 snd_pcm 75144 1 snd_pcm_oss, Live 0xd0968000 snd_page_alloc 8456 1 snd_pcm, Live 0xd084a000 snd_timer 18948 1 snd_pcm, Live 0xd0946000 snd_mixer_oss 15616 1 snd_pcm_oss, Live 0xd094c000 snd 42084 4 snd_pcm_oss,snd_pcm,snd_timer,snd_mixer_oss, Live 0xd0930000 soundcore 6368 1 snd, Live 0xd0845000 3c59x 33832 0 - Live 0xd093c000 via_rhine 16260 0 - Live 0xd092b000 mii 3840 1 via_rhine, Live 0xd0848000 crc32 3968 1 via_rhine, Live 0xd0808000 dump_blockdev 4608 0 - Live 0xd0818000 dump_gzip 2052 0 - Live 0xd0806000 zlib_deflate 21528 1 dump_gzip, Live 0xd089a000 nls_cp932 80768 1 - Live 0xd0864000 nls_euc_jp 4996 1 - Live 0xd0803000 ntfs 85844 1 - Live 0xd084e000 psmouse 19596 0 - Live 0xd0812000 uhci_hcd 27152 0 - Live 0xd080a000 usbcore 92388 3 uhci_hcd, Live 0xd081c000 |
1 列目にはモジュール名が、2 列目にはメモリサイズ、3 列目には使用カウンタが表示されます。使用カウンタは、現在ロードしているモジュールが参照されている数を表わします。0 にならない限りアンロードされません。典型的なものにデバイスのオープンやファイルシステムのマウントがあります。 例外としてモジュールが自分のアンロードを制御している場合は、この値は -1 になります。 次の列には参照しているモジュールが表示されます。lsmod コマンドで得られる値です。
# lsmod Module Size Used by iptable_filter 2176 0 ip_tables 14976 1 iptable_filter snd_pcm_oss 45352 0 snd_pcm 75144 1 snd_pcm_oss snd_page_alloc 8456 1 snd_pcm snd_timer 18948 1 snd_pcm snd_mixer_oss 15616 1 snd_pcm_oss snd 42084 4 snd_pcm_oss,snd_pcm,snd_timer,snd_mixer_oss soundcore 6368 1 snd 3c59x 33832 0 via_rhine 16260 0 mii 3840 1 via_rhine crc32 3968 1 via_rhine dump_blockdev 4608 0 dump_gzip 2052 0 zlib_deflate 21528 1 dump_gzip nls_cp932 80768 1 nls_euc_jp 4996 1 ntfs 85844 1 psmouse 19596 0 uhci_hcd 27152 0 usbcore 92388 3 uhci_hcd |
Intel P6 ファミリー(Pentium Pro、Pentium II 以降)の CPU で使用される MTRRs(the Memory Type Range Registers)の情報を出力します。標準的な出力例を以下に示します。
# cat /proc/mtrr reg00: base=0x00000000 ( 0MB), size= 256MB: write-back, count=1 reg01: base=0x42000000 (1056MB), size= 8MB: write-combining, count=1 |
MTRRs は、CPU がメモリにアクセスする範囲を制御します。PCI や AGP バス上のビデオ(VGA)カードを使っている場合、効果があります。通常は変更する必要はありません。:(コロン)で区切られて、1 列目には MTRR の名前が、2別目には、ベースアドレスとサイズが、3列目にはタイプが表示されます。
/proc/net 以下にはネットワークに関する様々な仮想ファイルが存在します。標準的な出力例を以下に示します。
# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 66035 307 0 0 0 0 0 0 66035 307 0 0 0 0 0 0
eth0:73605675 791018 0 0 0 0 0 0 61166831 205380 1 0 1 0 0 0
eth1:92505980 1017746 3 0 0 3 0 0 843000 1487 0 0 0 0 0 0 |
この例では、ネットワークデバイスと各インターフェースで送受信したデータのバイト数、パケット数、エラーの数といった情報が表示されています。他にも、arp(アドレス解決に使われるカーネルの ARP テーブル の情報)、dev_mcast(マルチキャスト)、ip_mr_cache(マルチキャストルーティングキャッシュ)、netstat(送受信した SYN クッキーや TCP の詳細パッケット情報など、総合的なパケットの統計情報)、route(ルーティングテーブル)、rt_cache(ルーティングキャッシュ)、snmp(Simple Network Management Protocol データ)、tr_rif(トークンリング RIF ルーティングテーブル)、unix(UNIX ドメインソケットのリスト)、igmp(Internet Group Management Protocol のデータ)、ip_mr_vif(マルチキャスト仮想インターフェース)、netlink(PF_NETLINK ソケットのリスト)、raw(raw デバイスの統計)、sockstat(ソケットの統計)、tcp(TCP ソケット情報)、udp(UDP ソケット情報)、wireles(無線 LAN に関する情報 )などを確認することができます。
各パーティションの情報を出力します。標準的な出力例を以下に示します。
# cat /proc/partitions major minor #blocks name 3 0 10005408 hda 3 1 2094088 hda1 3 2 1 hda2 3 5 2094088 hda5 3 6 60448 hda6 3 7 521608 hda7 3 8 4089928 hda8 3 9 1126408 hda9 |
1 列目から各パーティションのメジャー番号、マイナー番号、ブロック数、デバイス名を表示します。
PCI デバイスの情報を出力します。標準的な出力例を以下に示します。
# cat /proc/pci
PCI devices found:
Bus 0, device 0, function 0:
Class 0600: PCI device 8086:7190 (rev 3).
Master Capable. Latency=64.
Prefetchable 32 bit memory at 0x44000000 [0x47ffffff].
Bus 0, device 1, function 0:
Class 0604: PCI device 8086:7191 (rev 3).
Master Capable. Latency=64. Min Gnt=140.
Bus 0, device 14, function 0:
Class 0401: PCI device 1102:0002 (rev 8).
IRQ 11.
Master Capable. Latency=64. Min Gnt=2.Max Lat=20.
I/O at 0x10c0 [0x10df].
Bus 0, device 14, function 1:
Class 0980: PCI device 1102:7002 (rev 8).
Master Capable. Latency=64.
I/O at 0x1410 [0x1417].
Bus 0, device 15, function 0:
Class 0200: PCI device 10b7:9050 (rev 0).
IRQ 11.
Master Capable. Latency=64. Min Gnt=3.Max Lat=8.
I/O at 0x1080 [0x10bf].
...省略 |
カーネル初期化のタイミングで検出した全 PCI バスの情報です。IRQ(IRQ の部分)や I/O ポートアドレス(I/O at の部分)、マッピングされているメモリ(memory at の部分)などの情報も表示されます。
このディレクトリ以下に SCSI デバイスの情報があります。システムが SCSI ホストアダプタを搭載している場合、/proc/scsi ディレクトリが存在します。標準的な出力例を以下に示します。
# cat proc/scsi/scsi # cat /proc/scsi/scsi Attached devices: Host: scsi0 Channel: 00 Id: 00 Lun: 00 Vendor: IBM Model: DNES-309170W Rev: SA60 Type: Direct-Access ANSI SCSI revision: 03 Host: scsi0 Channel: 00 Id: 01 Lun: 00 Vendor: QUANTUM Model: ATLAS10K2-TY092L Rev: DDD6 Type: Direct-Access ANSI SCSI revision: 03 |
上記の例のように仮想ファイル scsi ですべての SCSI デバイスのデバイスタイプ、モデル名、製造元、SCSIチャネルID を確認することができます。例では、2 台の HDD が接続されています。
他に /proc/scsi には、各 SCSI ドライバ名のディレクトリがあり、ディレクトリ以下にはドライバを使用する SCSI ホストアダプタ固有の様々な情報があります。出力される内容は SCSI ドライバにより異なります。以下の例は、Adaptec 社の aic7890 Ultra2 SCSI アダプタに関する情報です。
# cat /proc/scsi/aic7xxx/0
Adaptec AIC7xxx driver version: 6.2.36
Adaptec aic7890/91 Ultra2 SCSI adapter
aic7890/91: Ultra2 Wide Channel A, SCSI Id=7, 32/253 SCBs
Allocated SCBs: 68, SG List Length: 128
Serial EEPROM:
0x03bb 0x03bb 0x03bb 0x03bb 0x03bb 0x03bb 0x03bb 0x03bb
0x03bb 0x03bb 0x03bb 0x03bb 0x03bb 0x03bb 0x03bb 0x03bb
0x18a6 0x1c5c 0x2807 0x0010 0xffff 0xffff 0xffff 0xffff
0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0x98be
Target 0 Negotiation Settings
User: 80.000MB/s transfers (40.000MHz, offset 127, 16bit)
Goal: 80.000MB/s transfers (40.000MHz, offset 31, 16bit)
Curr: 80.000MB/s transfers (40.000MHz, offset 31, 16bit)
Channel A Target 0 Lun 0 Settings
Commands Queued 37749
Commands Active 0
Command Openings 64
Max Tagged Openings 64
Device Queue Frozen Count 0
Target 1 Negotiation Settings
User: 80.000MB/s transfers (40.000MHz, offset 127, 16bit)
Goal: 80.000MB/s transfers (40.000MHz, offset 127, 16bit)
Curr: 80.000MB/s transfers (40.000MHz, offset 127, 16bit)
Channel A Target 1 Lun 0 Settings
Commands Queued 8
Commands Active 0
Command Openings 64
Max Tagged Openings 64
Device Queue Frozen Count 0
...省略 |
現在実行中のプロセスディレクトリ(/proc/PID)へのリンクのディレクトリです。プロセスがそのプロセス自身の PID を知らなくてもプロセスディレクトリにアクセスできるようになります。
カーネルの slab キャッシュの情報を出力します。標準的な出力例を以下に示します。
# cat /proc/slabinfo slabinfo - version: 2.0 # name <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <batchcount> <limit> <sharedfactor> : slabdata <active_slabs> <num_slabs> <sharedavail> ip_fib_hash 14 226 16 226 1 : tunables 120 60 0 : slabdata 1 1 0 ntfs_big_inode_cache 237 240 480 8 1 : tunables 54 27 0 : slabdata 30 30 0 ntfs_inode_cache 0 0 160 25 1 : tunables 120 60 0 : slabdata 0 0 0 ntfs_name_cache 0 0 512 8 1 : tunables 54 27 0 : slabdata 0 0 0 ntfs_attr_ctx_cache 0 0 32 119 1 : tunables 120 60 0 : slabdata 0 0 0 ntfs_index_ctx_cache 0 0 64 61 1 : tunables 120 60 0 : slabdata 0 0 0 uhci_urb_priv 0 0 44 88 1 : tunables 120 60 0 : slabdata 0 0 0 unix_sock 103 110 384 10 1 : tunables 54 27 0 : slabdata 11 11 0 ip_mrt_cache 0 0 96 41 1 : tunables 120 60 0 : slabdata 0 0 0 tcp_tw_bucket 0 0 128 31 1 : tunables 120 60 0 : slabdata 0 0 0 tcp_bind_bucket 4 226 16 226 1 : tunables 120 60 0 : slabdata 1 1 0 tcp_open_request 0 0 96 41 1 : tunables 120 60 0 : slabdata 0 0 0 inet_peer_cache 0 0 64 61 1 : tunables 120 60 0 : slabdata 0 0 0 secpath_cache 0 0 128 31 1 : tunables 120 60 0 : slabdata 0 0 0 xfrm_dst_cache 0 0 256 15 1 : tunables 120 60 0 : slabdata 0 0 0 ip_dst_cache 319 435 256 15 1 : tunables 120 60 0 : slabdata 29 29 0 arp_cache 213 310 128 31 1 : tunables 120 60 0 : slabdata 10 10 0 raw4_sock 0 0 480 8 1 : tunables 54 27 0 : slabdata 0 0 0 ...省略 |
カーネル内部で使用頻度の高いバッファヘッド、i-node、ディレクトリエントリなどのオブジェクトはそれぞれに slab キャッシュを持っています。キャッシュ名、現在アクティブなオブジェクトの数、利用可能なオブジェクトの総数、各オブジェクトのサイズ (バイト単位)、アクティブなオブジェクトを有するページ数、アロケートされたページ総数、slab あたりのページ数などを確認できます。出力の 2 行目(# name ではじまる行)には各値のタイトルが表示されます。
カーネルやシステムの統計情報を出力します。標準的な出力例を以下に示します。
# cat /proc/stat cpu 106309 31413 63008 18676423 77726 2340 1855 cpu0 106309 31413 63008 18676423 77726 2340 1855 intr 191225951 189619590 15750 0 0 0 0 0 0 1 0 0 1305742 15373 0 269492 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ctxt 44221773 btime 1092115366 processes 15202 procs_running 1 procs_blocked 0 preempt 21535348 |
アーキテクチャにより表示内容は異なります。1 行目(cpu の行)は CPU 全体についてユーザーモード、低い優先度 (nice) でのユーザーモード、システムモード、アイドル状態でそれぞれシステムが消費した時間を jiffies (1/100 秒) を単位として計測した値です。アイドル状態の値は仮装ファイル uptime の 2 番目の値を 100 倍したものになります。2行目から cpu0 のように CPU ごとの値が表示されます。以降では、intr (システム起動時からの割り込み総数:IRQ 番号ごと)、ctxt の行(コンテクストスイッチの総数)、btime の行(システム起動からの総時間:秒単位)、processes の行(システム起動からの総フォーク数)などが表示されます。
/proc/sys ディレクトリ以下には、abi(パーソナリティタイプ)、debug、dev(特定のデバイス)、fs(ファイルシステム)、kernel(カーネル)、net(ネットワーク)、proc、vm(仮想メモリ領域)といったサブディレクトリが存在します。/proc/sys 以下に存在する仮想ファイルの多くは、カーネルのリコンパイルやシステムの再起動をすることなく運用中であってもダイナミックにパラメータの値を変更することが可能です。 以降では、このディレクトリに存在する代表的な仮想ファイルを解説します。
このディレクトリには特定のデバイスに関する情報があります。環境によって cdrom、rtc、scsi、parport、raid などといったサブディレクトリが存在し、それぞれの情報を確認することができます。以下の例は、マウント中の CDROM ドライブに関する情報です。
# cat /proc/sys/dev/cdrom/info CD-ROM information, Id: cdrom.c 3.20 2003/12/17 drive name: hdc drive speed: 32 drive # of slots: 1 Can close tray: 1 Can open tray: 1 Can lock tray: 1 Can change speed: 1 Can select disk: 0 Can read multisession: 1 Can read MCN: 1 Reports media changed: 1 Can play audio: 1 Can write CD-R: 1 Can write CD-RW: 1 Can read DVD: 0 Can write DVD-R: 0 Can write DVD-RAM: 0 Can read MRW: 1 Can write MRW: 1 Can write RAM: 1 |
Can ではじまる各値が、1 のものは有効、0 のものは無効です。例えば、Can close tray: や Can open tray: の値は、/proc/sys/dev/cdrom/ 下の autoclos や autoeject の値を使用して変更することができます。
このディレクトリには、ファイルシステムに関連する様々な情報があります。以下の例は、システム全体で一度にオープンできるファイル数です。1 つのプロセスで多くのファイルをオープンするシステムの場合など、この値がパフォーマンスに影響します。
# cat /proc/sys/fs/file-max 25280 |
他にも以下のように様々な情報を確認することができます。
表 30-1. /proc/sys/fs/ の主な仮想ファイル
| /proc/sys/fs/binfmt_misc | バイナリフォーマットサポートのための仮想ファイル用のディレクトリです。 |
| /proc/sys/fs/inode-max | メモリ内の inode 数の上限です。file-max の値の 3 から 4 倍にすべきです。 |
| /proc/sys/fs/inode-nr | nr_inodes(システムの確保している inode 数)、nr_free_inodes(あいている inode 数)です。inode-state のはじめの 2 つの数字です。 |
| /proc/sys/fs/inode-state | nr_inodes(システムの確保している inode 数)、nr_free_inodes(あいている inode 数)、preshrink と 4 つのダミーの値を持ちます。 |
| /proc/sys/fs/lease-break-time | ファイルを保持しているプロセスに対してカーネルがシグナルを送り、他のプロセスがそのファイルをオープンするのを待っていることを通知以降のリースを許す猶予期間です。 |
| /proc/sys/fs/leases-enable | システムのファイルリースの有効(1)/ 無効(0)を切り替えます。 |
| /proc/sys/fs/overflowgid | 固定 GID の書き換え可否の指定です。 |
| /proc/sys/fs/overflowuid | 固定 UID の書き換え可否の指定です。 |
| /proc/sys/fs/super-max | スーパーブロックの最大値(カーネルがマウントできる最大数)です。 |
| /proc/sys/fs/super-nr | 現在マウントされているファイルシステム数です。 |
| /proc/sys/fs/dentry-state | キャッシュされているディレクトリエントリです。 |
| /proc/sys/fs/dir-notify-enable | dnotify インターフェースをシステム全体で無効/有効に切り替えます。 |
| /proc/sys/fs/dquot-max | ディスククォータエントリの最大数です。 |
| /proc/sys/fs/dquot-nr | ディスククォータのエントリ数と、空いているディスククォータのエントリ数です。 |
| /proc/sys/fs/file-max | システム全体でプロセスがオープンできるファイル数の上限です。 |
| /proc/sys/fs/file-nr | プロセスがオープンしているファイル数です。 |
このディレクトリ以下にはカーネルの動作に関連する様々な情報があります。以下の例は、キーボードの[Ctrl]+[Alt]+[Del]が押されたときの処理に関する情報です。
# cat /proc/sys/kernel/ctrl-alt-del 0 |
値が 0 の時、init プロセスに処理が渡り正しく再起動を行います。0 より大きいとき、すぐにリブートの処理を行い、処理されていないバッファの sync を行いません。
以下の例は、OS タイプとそのリリース番号です。
# cat /proc/sys/kernel/ostype Linux # cat /proc/sys/kernel/osrelease 2.6.7-0.30 |
他にも以下のように様々な情報を確認することができます。
表 30-2. /proc/sys/kernel/ の主な仮想ファイル
| /proc/sys/kernel/ | カーネルに関する情報の仮想ファイル用ディレクトリです。 |
| /proc/sys/kernel/cap-bound | capability bounding set(符号付き 10 進数表現)の値です。 |
| /proc/sys/kernel/core_uses_pid | coredump のファイル名に PID を使用する(1)/ 使用しない(0)を切り替えます。 |
| /proc/sys/kernel/ctrl-alt-del | キーボードの[Ctrl]+[Alt]+[Del]の扱い(0 のとき init プロセスにわたり正しく再起動する)です。 |
| /proc/sys/kernel/domainname | ドメイン名です。domainname コマンドにより得られる値です。 |
| /proc/sys/kernel/hostname | ホスト名です。hostname コマンドにより得られる値です。 |
| /proc/sys/kernel/modprobe | modprobe のパスです。 |
| /proc/sys/kernel/msgmax | System V メッセージキューに書き込まれるメッセージの最大値(バイト)です。 |
| /proc/sys/kernel/msgmni | メッセージキュー識別子の最大数です。 |
| /proc/sys/kernel/msgmnb | msg_qbytes の設定(メッセージキューに書き込まれる最大バイト数)を初期化するパラメータです。 |
| /proc/sys/kernel/ostype | OS のタイプに関する情報です。 |
| /proc/sys/kernel/osrelease | OS のバージョンに関する情報です。 |
| /proc/sys/kernel/overflowgid | /proc/sys/fs/overflowgid のコピーです。 |
| /proc/sys/kernel/overflowuid | /proc/sys/fs/overflowuid のコピーです。 |
| /proc/sys/kernel/panic | カーネル変数 panic_timeout への書き込みと読み出しアクセス秒数です。0 のとき無限ループします。0 秒以外の時、その秒数後に自動的に再起動されます。 |
| /proc/sys/kernel/printk | エラーメッセージの表示と記録に関する情報です。 |
| /proc/sys/kernel/random/ | /dev/randam の操作を制御する値の書かれた仮想ファイル用のディレクトリです。 |
| /proc/sys/kernel/real-root-dev | root ファイルシステムのデバイス番号です。 |
| /proc/sys/kernel/rtsig-max | POSIX realtime(queued)signal の最大数です。 |
| /proc/sys/kernel/rtsig-nr | 現在キューに入っている POSIX realtime(queued)signal の数です。 |
| /proc/sys/kernel/sem | Syste V IPC セマフォを制限する値です。 |
| /proc/sys/kernel/sg-big-buff | 汎用 SCSI デバイス(sg)のバッファサイズの最大値です。 |
| /proc/sys/kernel/shmall | System V 共有メモリの総ページ数のシステム内最大値です。 |
| /proc/sys/kernel/shmmax | System V 共有メモリ作成時の最大値です。 |
| /proc/sys/kernel/shmmni | System V 共有メモリのシステム内の最大セグメント数です。 |
| /proc/sys/kernel/version | カーネル構築バージョン(このシステムで何番目に構築されたか)、日付、時刻です。 |
このディレクトリ以下に仮想メモリサブシステムに関する処理とダーティデータのディスクへの書き出しに関する様々な情報があります。以下の例は、メモリオーバーコミットに関する値です。
# cat /proc/sys/vm/overcommit_memory 0 |
ユーザー空間からの要求に対し、0 の場合はメモリの空き領域の容量を評価します。1 の場合は、メモリを使い切るまでは空き領域があるように振る舞い、2 の場合にはどのようなメモリオーバーコミットも許可しなくなります。
以下の例は、1 つのプロセスが保持できるメモリマップ領域の最大数です。
# cat /proc/sys/vm/max_map_count 65536 |
デフォルトの 65536 に設定されています。他にも overcommit_ratio(overcommit_memory が 2 のとき、スワップおよび物理メモリにこのパーセンテージを掛けたものをそれぞれ足した値をコミットされるアドレス空間が越えて利用できない)、page-cluster(カーネルが一度に読み込むページ数)、min_free_kbytes(強制的にフリーにする最小メモリ容量)、block_dump(読み書きのすべての操作、ダーティな書き込みなどに関する dump の有効/無効)などの情報を確認することができます。
System V プロセス間通信オブジェクトに関する情報を出力します。以下の例は、System V プロセス間通信オブジェクトのメッセージキューのリストです。
# cat /proc/sysvipc/msg
key msqid perms cbytes qnum lspid lrpid uid gid cuid cgid stime rtime ctime |
他にも、sem(セマフォノリスト)、shm(共有メモリのリスト)などの情報を確認できます。
tty デバイスに関する情報を出力します。以下の例は、現在利用されている tty に関する情報です。
# cat /proc/tty/drivers /dev/tty /dev/tty 5 0 system:/dev/tty /dev/console /dev/console 5 1 system:console /dev/ptmx /dev/ptmx 5 2 system /dev/vc/0 /dev/vc/0 4 0 system:vtmaster serial /dev/ttyS 4 64-111 serial pty_slave /dev/pts 136 0-1048575 pty:slave pty_master /dev/ptm 128 0-1048575 pty:master pty_slave /dev/ttyp 3 0-255 pty:slave pty_master /dev/pty 2 0-255 pty:master unknown /dev/tty 4 1-63 console |
他にも、driver/serial(回線規約:line descipline)、ldiscs(使用状況統計、各 tty 回線の状況)を確認できます。
システム起動後に経過した時間を出力します。標準的な出力例を以下に示します。
67832.53 67683.94 |
1 列目の値はシステム起動後に経過した時間(秒)、2 列目はアイドル時間(秒)です。
カーネルのバージョン情報を出力します。標準的な出力例を以下に示します。
# cat /proc/version Linux version 2.6.7-0.30 (go@kernel.turbolinux.co.jp) (gcc version 3.3.3 (Turbolinux 3.3.3-2)) #1 Sun Aug 8 17:02:30 JST 2004 |
カーネルのバージョン情報には、/proc/sys/kernel/ostype、/proc/sys/kernel/osrelease、/proc/sys/kernel/version の内容が含まれます。