/procのディレクトリ

カーネルに関するよく使用される情報のグループは/procディレクトリ内のディレクトリとサブディレクトリにグループ分けされます。

プロセスディレクトリ

/procディレクトリには番号の付いた多くのディレクトリがあります。この一覧の開始は次のようになります。

dr-xr-xr-x    3 root     root            0 Feb 13 01:28 1
dr-xr-xr-x    3 root     root            0 Feb 13 01:28 1010
dr-xr-xr-x    3 xfs      xfs             0 Feb 13 01:28 1087
dr-xr-xr-x    3 daemon   daemon          0 Feb 13 01:28 1123
dr-xr-xr-x    3 root     root            0 Feb 13 01:28 11307
dr-xr-xr-x    3 apache   apache          0 Feb 13 01:28 13660
dr-xr-xr-x    3 rpc      rpc             0 Feb 13 01:28 637
dr-xr-xr-x    3 rpcuser  rpcuser         0 Feb 13 01:28 666

これらのディレクトリは、プロセスのIDを示し、そのプロセス固有の情報を保存しているので、プロセスディレクトリと呼ばれます。各プロセスディレクトリの所有者とグループはプロセスを実行しているユーザーに設定されます。プロセスが終了すると、その/procプロセスディレクトリは消えます。しかし、プロセス実行中は、プロセスディレクトリのさまざまなファイルにプロセス固有の多くの情報が保存されます。

各プロセスディレクトリには次のファイルがあります。

/proc/bus/

このディレクトリには、システムで利用できるさまざまなバス固有情報が保存されています。したがって、たとえばISA、PCI、USBバスを搭載した標準的なシステムでは、各バスについての現在のデータを/proc/bus/のディレクトリで入手できます。

利用できるサブディレクトリとファイルの内容は、システムの設定によって大幅に異なります。ただし、各バスタイプの各ディレクトリには、そのタイプの各バスにつき少なくとも1つのディレクトリがあります。これらの個々のバスディレクトリは通常、00などの数字で表し、そこにはそのバスで使用できるさまざまなデバイスに関するバイナリファイルがあります。

したがって、たとえば、USBバスを搭載しているが、USBデバイスは接続していないシステムには、いくつかのファイルの入った/proc/bus/usbディレクトリがあります。

total 0
dr-xr-xr-x    1 root     root            0 May  3 16:25 001
-r--r--r--    1 root     root            0 May  3 16:25 devices
-r--r--r--    1 root     root            0 May  3 16:25 drivers
[root@thoth /]# ls -l /proc/bus/usb/001
total 1
-rw-r--r--    1 root     root           18 May  3 16:25 001 

/proc/bus/usbディレクトリには、USBバス上のさまざまなデバイスを追跡するファイルとそれを使用する必要のあるでデバイスがあります。001ディレクトリには、最初のUSBバス上のすべてのデバイスがあります。devicesファイルの内容を見ると、これはマザーボードのUSBルートハブであることがわかります。

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.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 0.00
S:  Product=USB UHCI Root Hub
S:  SerialNumber=d400
C:* #Ifs= 1 Cfg#= 1 Atr=40 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=   8 Ivl=255ms 

/proc/driver/

このディレクトリにはカーネルが使用する特定のドライバについての情報があります。

一般的にここにあるファイルは、rtcで、システムのリアルタイムクロック(RTC)用のドライバからの出力を提供します。このRTCというデバイスは、システムがオフになっている間、時計を動かしておきます。/proc/driver/rtcの出力例は次のとおりです。

rtc_time	: 01:38:43
rtc_date	: 1998-02-13
rtc_epoch	: 1900
alarm		: 00:00: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

RTCについての詳細情報は、/usr/src/linux-2.4/Documentation/rtc.txtを参照してください。

/proc/ide/

このディレクトリにはシステム上のIDEデバイスについての情報があります。各IDEチャンネルは、/proc/ide/ide0/proc/ide/ide1などの個別ディレクトリとして表されます。さらに、driversファイルも利用できます。このファイルは、IDEチャンネル上で使用するさまざまなドライバのバージョン番号を提供します。

ide-cdrom version 4.59
ide-floppy version 0.97
ide-disk version 1.10

多くのチップセットはまた、さなざまなチャンネルを介して接続されているドライブに関する追加情報をこのディレクトリ内に提供します。たとえば、汎用のIntel PIIX4 Ultra 33チップセットは、/proc/ide/piixファイルを生成しますが、これにより、IDEチャンネル上のデバイス用にDMAかUDMAが有効かどうかわかります。

                                Intel PIIX4 Ultra 33 Chipset.
--------------- Primary Channel ---------------- Secondary Channel -------------
                 enabled                          enabled
--------------- drive0 --------- drive1 -------- drive0 ---------- drive1 ------
DMA enabled:    yes              no              yes               no 
UDMA enabled:   yes              no              no                no 
UDMA enabled:   2                X               X                 X
UDMA
DMA
PIO

ide0など、IDEチャンネルのディレクトリをナビゲーションするとさらに情報が得られます。channelファイルでチャンネル番号が、modelファイルでチャンネルのバスタイプ(pciなど)がわかります。

デバイスディレクトリ

各IDEチャンネルディレクトリ内は、デバイスディレクトリです。デバイスディレクトリ名は、/devディレクトリ内のドライブ文字を反映しています。例えば、ide0上の最初のIDEドライブは、hdaとなづけられています。

注意注意
 

/proc/ide/ディレクトリには、これら各デバイスディレクトリのシンボリックリンクがあります。

各デバイスディレクトリには、情報の集合と統計値があります。これらディレクトリの内容は、接続されているデバイスのタイプにより変わります。使いやすいファイルは、たくさんのデバイスを含んでいるという事が共通です。

/proc/irq/

このディレクトリを使用してIRQをCPUアフィニティに設定すると、特定のIRQを1つのCPUにのみ接続できます。また、CPUがどのIRQも処理しないように設定することもできます。

各IRQには独自のディレクトリがあり、各IRQを異なる設定にできます。/proc/irq/prof_cpu_maskファイルはIRQディレクトリのsmp_affinityファイルのデフォルト値を保存したビットマスクです。smp_affinityの値で、特定のIRQを処理するCPUを指定します。

詳細情報は、/usr/src/linux-2.4/Documentation/filesystems/proc.txt ファイルを参照してください。

/proc/net/

このディレクトリでは、さまざまなネットワークのパラメータと統計情報を包括的に表示します。各ファイルには、システムのネットワーキングに関連する情報の特定範囲が保存されています。

/proc/scsi/

ディレクトリは、/proc/ide/ディレクトリと同様、SCSIデバイス接続専用のディレクトリです。

このディレクトリのプライマリファイルは、/proc/scsi/scsiです。ここには、認識されたSCSIデバイスすべての一覧が保存されます。たとえば、システムにSCSI CD-ROM、テープドライブ、ハードディスクドライブ、RAIDコントローラがある場合、このファイルは次のようになります。

Attached devices: 
Host: scsi1 Channel: 00 Id: 05 Lun: 00
  Vendor: NEC      Model: CD-ROM DRIVE:466 Rev: 1.06
  Type:   CD-ROM                           ANSI SCSI revision: 02
Host: scsi1 Channel: 00 Id: 06 Lun: 00
  Vendor: ARCHIVE  Model: Python 04106-XXX Rev: 7350
  Type:   Sequential-Access                ANSI SCSI revision: 02
Host: scsi2 Channel: 00 Id: 06 Lun: 00
  Vendor: DELL     Model: 1x6 U2W SCSI BP  Rev: 5.35
  Type:   Processor                        ANSI SCSI revision: 02
Host: scsi2 Channel: 02 Id: 00 Lun: 00
  Vendor: MegaRAID Model: LD0 RAID5 34556R Rev: 1.01
  Type:   Direct-Access                    ANSI SCSI revision: 02

この一覧で、デバイスタイプ、モデル名、ベンダー、SCSIチャンネルIDデータがわかります。

さらに、システムが使用する各SCSIドライバには、/proc/scsiに独自のディレクトリがあります。ここには、そのドライバを使用する各SCSIコントローラ固有のファイルがあります。したがって、たとえば上記のシステムでは、aic7xxxmegaraidの2つのドライバが使用されているので、これらのディレクトリがあります。各ディレクトリ内のファイルには通常IOアドレス範囲、IRQ、そのドライバを使用する特定のSCSIコントローラの統計情報が保存されています。各コントローラがレポートする情報のタイプと量は異なりますが。この例示システムで使用しているAdaptec AIC-7880 Ultra SCSIホストアダプタのファイルは、次のような出力を生成します。

Adaptec AIC7xxx driver version: 5.1.20/3.2.4
Compile Options:
  TCQ Enabled By Default : Disabled
  AIC7XXX_PROC_STATS     : Enabled
  AIC7XXX_RESET_DELAY    : 5

Adapter Configuration:
           SCSI Adapter: Adaptec AIC-7880 Ultra SCSI host adapter
                           Ultra Narrow Controller
    PCI MMAPed I/O Base: 0xfcffe000
 Adapter SEEPROM Config: SEEPROM found and used.
      Adaptec SCSI BIOS: Enabled
                    IRQ: 30
                   SCBs: Active 0, Max Active 1,
                         Allocated 15, HW 16, Page 255
             Interrupts: 33726
      BIOS Control Word: 0x18a6
   Adapter Control Word: 0x1c5f
   Extended Translation: Enabled
Disconnect Enable Flags: 0x00ff
     Ultra Enable Flags: 0x0020
 Tag Queue Enable Flags: 0x0000
Ordered Queue Tag Flags: 0x0000
Default Tag Queue Depth: 8
    Tagged Queue By Device array for aic7xxx host instance 1:
      {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}
    Actual queue depth per device for aic7xxx host instance 1:
      {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}

Statistics:

(scsi1:0:5:0)
  Device using Narrow/Sync transfers at 20.0 MByte/sec, offset 15
  Transinfo settings: current(12/15/0/0), goal(12/15/0/0), user(12/15/0/0)
  Total transfers 0 (0 reads and 0 writes)
             < 2K      2K+     4K+     8K+    16K+    32K+    64K+   128K+
   Reads:       0       0       0       0       0       0       0       0
  Writes:       0       0       0       0       0       0       0       0


(scsi1:0:6:0)
  Device using Narrow/Sync transfers at 10.0 MByte/sec, offset 15
  Transinfo settings: current(25/15/0/0), goal(12/15/0/0), user(12/15/0/0)
  Total transfers 132 (0 reads and 132 writes)
             < 2K      2K+     4K+     8K+    16K+    32K+    64K+   128K+
   Reads:       0       0       0       0       0       0       0       0
  Writes:       0       0       0       1     131       0       0       0

この画面で、チャンネルIDに基づいてコントローラに接続されているさまざまなSCSIデバイスへの転送速度、デバイスが読み取り/書き込みするファイルの量とサイズについての詳細な統計情報がわかります。/proc/scsi/scsiファイルについて言えば、このコントローラは20Mビット/秒でCD-ROMと通信しており、テープドライブは10Mビット/秒で接続されていることがわかります。

/proc/sys/

/proc/sys/ディレクトリは/proc内の他のディレクトリとは違っています。というのは、システムに関する情報を提供するだけでなく、カーネルに設定変更を加えることもできます。これにより、システム管理者は、カーネル設定をすぐに有効または無効にする事ができます。

警告警告
 

/proc/sysディレクトリ内のさまざまなファイルを使用している実動システム上の設定を変更する際は注意してください。誤った設定変更によりカーネルが不安定になり、システムを再起動しなければならなくなる可能性があります。

従って、/proc/sys内の値を変更する前に、そのファイルの有効なオプションと予想される結果について必ず確認してください。

特定のファイルが設定可能なのか単に情報提供するだけなのかを判断するには一覧を表示させます。ファイルが書き込み可能であれば、それを使用して一定の方法でカーネルを設定することができます。 たとえば、/proc/sys/fsの一覧(一部)は以下のようになっているとします。

-r--r--r--    1 root     root            0 May 10 16:14 dentry-state
-rw-r--r--    1 root     root            0 May 10 16:14 dir-notify-enable
-r--r--r--    1 root     root            0 May 10 16:14 dquot-nr
-rw-r--r--    1 root     root            0 May 10 16:14 file-max
-r--r--r--    1 root     root            0 May 10 16:14 file-nr

この一覧を見ると、dir-notify-enableファイルとfile-maxファイルは書き込み可能なので、カーネル設定に使用することができます。他のファイルは現在の設定に関する情報を提供するだけです。

/proc/sys/ファイル内の値を変更するには、新しい値をファイルにエコーします。たとえば、実行中のカーネル上のシステム要求キーを使用可能にするには、以下のコマンドを入力します。

echo 1 > /proc/sys/kernel/sysrq

これでsysrqファイルの値は 0 (off)から 1 (on)に変更されます。

システム要求キーの目的は、単純なキーコンビネーションを使用し、すぐにシャットダウンする、システムを再起動する、マウントした全ファイルシステムを同期化する、重要な情報を自分のコンソールにダンプするなど、多くの重要なアクティビティをすぐに実行するようカーネルに指示できるようにすることです。この機能は、開発カーネルの使用中やシステムがフリーズした場合に重宝します。システム要求キーの詳細については、 /usr/src/linux-2.4/Documentation/sysrq.txtを参照してください。

/proc/sys/設定ファイルには複数の値が含まれていることがあります。その場合、ファイルに新しい値を正確に送るために、下記の例のように、echoコマンドと共に渡す値の間にスペースを1個挿入します。

echo 4 2 45 > /proc/sys/kernel/acct

注意注意
 

echoを用いて行った設定変更は、システムの再起動時に失われます。設定変更をシステムのブート時にも有効にするには、sysctlの使用を参照してください。

/proc/sys/ディレクトリには、実行カーネルの異なる側面を制御するそれぞれ異なったサブディレクトリが含まれています。

/proc/sys/dev/

このディレクトリはシステム上の特定のデバイス用パラメータを提供します。ほとんどのシステムには少なくとも2つのディレクトリ cdromraidがありますが、カスタマイズされたカーネルはそれ以外に複数のデバイスドライバ間で1個のパラレルポートを共有できるようにするparportなどのディレクトリを持つことができます。

cdromディレクトリにはinfoと呼ばれるファイルがあります。多くの重要なCD-ROMパラメータを明示します。

CD-ROM information, Id: cdrom.c 3.12 2000/10/18

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:		0
Can write CD-RW:	0
Can read DVD:		0
Can write DVD-R:	0
Can write DVD-RAM:	0

このファイルを一瞥すると少なくともカーネルに対する未知のCD-ROMのクオリティを知ることができます。システム上で複数のCD-ROMが利用できる場合、各デバイスにはそれぞれ情報カラムが与えられます。

autoclosecheckmediaなど、/proc/sys/dev/cdrom内のさまざまなファイルは、システムのCD-ROMを制御するために使用できます。これらの機能をオンまたはオフにするには、echoを用います。

RAIDサポートをカーネルにコンパイルした場合、/proc/sys/dev/raid/ディレクトリは少なくとも2つのファイルspeed_limit_minspeed_limit_maxと共に利用できるようになります。こうした設定は、ディスクの同期化など特に入出力の激しいタスクでRAIDデバイスが使用される場合の速度の調節に活用できます。

/proc/sys/fs/

このディレクトリには、quota、file handle、inode、dentry情報を含むファイルシステムに関するさまざまな側面について多くのオプションと情報が格納されています。

binfmt_miscディレクトリは、さまざまなバイナリフォーマットにカーネルサポートを提供するために使用されます。

/proc/sys/fs内の重要なファイルには、以下のようなものがあります。

/proc/sys/kernel/

このディレクトリにはカーネルの動作に直接影響するさまざまな異なる設定ファイルが格納されています。最も重要なファイルには以下のようなものがあります。

randomディレクトリには、カーネルのための乱数生成に関連した多数の値が格納されます。

/proc/sys/net/

このディレクトリには、ネットワーキングトピックに関係するさまざまなディレクトリが含まれています。カーネルのコンパイル時の構成により、appletalkethernetipv4ipxipv6など、利用可能な異なるディレクトリが作成されます。これらのディレクトリ内で、実行中のシステム上の設定に適するようネットワーキング値を修正することができます。

Linuxでは多種多様なネットワーキングオプションを利用することができますが、それについてすべて説明する紙幅はないので、最も一般的な/proc/sys/net/ディレクトリについて説明します。

coreディレクトリには、カーネルとネットワーキングレイヤー間の相互作用を制御するさまざまな設定が格納されています。最も重要なファイルは、以下のようになっています。

ipv4ディレクトリには、追加ネットワーク設定が含まれます。こうした設定の多くを相互に関連させて使用すると、システムへの攻撃を防止するため、あるいは、ルーターとしてシステムを用いる場合に非常に役に立ちます。

注意重要
 

これらの設定で変更にミスをするとシステムへのリモート接続に影響が生じる可能性があります。

/proc/net/ipv4/ディレクトリの最も重要なファイルは、以下のようになっています。

利用可能なすべてのファイルとオプションの一覧については/usr/src/linux-2.4/Documentation/networking/ip-sysctl.txtを参照してください。

/proc/sys/net/ipv4/ディレクトリ内にある他の多くのディレクトリは固有のトピックを扱います。confディレクトリは、システムインターフェイスを異なる方法で設定することを可能にします。これには(defaultサブディレクトリの)未設定デバイスのためのデフォルトの設定や(allサブディレクトリ)の特別な設定を無効にする設定が含まれます。

直接自分のシステムに接続された他のシステム間の接続を制御するため、neighディレクトリはそれぞれのインターフェイスに特別な設定を行うことができます。これにより、自分のシステムとの相対的な近接によりシステムを別々にもっと信頼して扱うことができるようになります。同時に、少し離れたシステムに厳密なルールを課すことも容易になります。

IPV4上のルーティングにも独自のディレクトリrouteがあります。confneighと異なり、routeディレクトリにはシステム上のインターフェイスにルーティングを適用する仕様が含まれています。max_sizemax_delaymin_delayなど設定の多くはルーティングキャッシュのサイズの制御に関係しています。ルーティングキャッシュをクリアするには、flushファイルに任意の値を書き込むだけです。

これらのディレクトリや設定ファイルの値に関する詳細については、/usr/src/linux-2.4/Documentation/filesystems/proc.txtを参照してください。

/proc/sys/vm/

このディレクトリは、Linuxカーネルのメモリ(VM)サブシステムの設定を円滑にします。カーネルは仮想メモリを広範囲かつインテリジェントに使用します。これは一般にスワップ領域と呼ばれます。

以下のファイルは、通常/proc/sys/vm/ディレクトリにあります。

こうしたさまざまなファイルの詳細については、/usr/src/linux-2.4/Documentation/sysctl/vm.txtを参照してください。

/proc/sysvipc/

このディレクトリにはSystem V IPCリソースに関する情報が含まれています。このディレクトリ内のファイルは、メッセージ(msg)、セマフォ(sem)、共有メモリ(shm)に対するSystem V IPCコールに関係しています。

/proc/tty/

このディレクトリにはシステム上で利用可能な現在使用されているttyデバイスに関する情報が格納されています。従来teletype deviceと呼ばれていたもので、キャラクタベースのデータ端末がttyデバイスと呼ばれます。

Linuxには3種類のttyデバイスがあります。シリアルデバイスはモデムやシリアルケーブルなどを使用する接続に使用されます。仮想端末は、システムコンソールで[Alt]-[<F>]キーを押すと利用可能な仮想コンソールなど一般のコンソール接続を作成します。疑似端末X11など、より高いレベルのアプリケーションで使用される双方向コミュニケーションを作成します。

driversファイルは使用中の現在のttyデバイス一覧です。

serial               /dev/cua        5  64-127 serial:callout
serial               /dev/ttyS       4  64-127 serial
pty_slave            /dev/pts      136   0-255 pty:slave
pty_master           /dev/ptm      128   0-255 pty:master
pty_slave            /dev/ttyp       3   0-255 pty:slave
pty_master           /dev/pty        2   0-255 pty:master
/dev/vc/0            /dev/vc/0       4       0 system:vtmaster
/dev/ptmx            /dev/ptmx       5       2 system
/dev/console         /dev/console    5       1 system:console
/dev/tty             /dev/tty        5       0 system:/dev/tty
unknown              /dev/vc/%d      4    1-63 console

/proc/tty/driver/serialファイルは各シリアルtty行の使用統計とステータスの一覧を示します。

ttyデバイスをネットワークデバイスと同様の方法で使用できるようにするため、Linuxカーネルはデバイスの回線制御を強化します。これにより、ドライバはデバイス上で伝送されるデータブロックに固有のヘッダーを付けることができます。接続のリモートエンドでデータブロックを1本のストリームのように見ることが可能です。SLIPやPPPは一般的な回線制御で、それぞれ一般にシリアルリンクでシステムを接続するために使用されます。

登録した回線制御はldiscディレクトリで利用可能な詳細情報とともにldiscsファイルに格納されます。