5.3. /proc/配下のディレクトリ

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

5.3.1. プロセスディレクトリ

/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プロセスディレクトリは消えます。

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

5.3.1.1. /proc/self/

/proc/self/ディレクトリは現在実行中のプロセスへのリンクです。 これにより、プロセスは、自身のプロセスIDを知らなくても状況を把握できます。

シェル環境では、/proc/self/ディレクトリの一覧は、 そのプロセス用のプロセスディレクトリの一覧と同じ内容を生成します。

5.3.2. /proc/bus/

このディレクトリには、システムで利用できるさまざまなバス固有情報が保存されています。たとえば、PCI や USBバスを搭載した標準的なシステムでは、 各バスについての現在のデータが、/proc/bus/pci/など 同じ名前で、/proc/bus/配下のサブディレクトリにあります。

/proc/bus/配下にあるサブディレクトリとファイルは、 システムに接続しているデバイスによって異なります。 しかし、各バスタイプには少なくとも1つのディレクトリがあります。 このバスのディレクトリの配下には、通常、001などの 番号名が付いたサブディレクトリが少なくとも1つあり、バイナリファイルを含んでいます。

例えば、/proc/bus/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

/proc/bus/usb/001/ディレクトリには、 1番目のUSBバス上の全デバイスが含まれ、devices ファイルはマザーボードのUSBルートハブを識別します。

以下は、/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.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

5.3.3. /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を参照してください。

5.3.4. /proc/fs

このディレクトリは、エクスポートされるファイルシステムを表示します。NFSサーバーを稼働している場合、 cat /proc/fs/nfs/exportsとタイプすると、共有されているファイルシステムと それらのファイルシステムへの権限を表示します。NFSによるファイルシステムの共有に関する詳細は第9章 で参照してください。

5.3.5. /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など)がわかります。

5.3.5.1. デバイスディレクトリ

各IDEチャンネルディレクトリ内は、デバイスディレクトリがあります。デバイスディレクトリ名は、 /devディレクトリ内のドライブ文字に対応しています。例えば、 ide0上の最初のIDEドライブは、hdaと名付けられます。

注意注記
 

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

各デバイスディレクトリには、一連の情報と統計値があります。これらディレクトリの内容は、 接続されているデバイスのタイプにより変わります。多くのデバイスに共通して役に立つファイルには、 次のようなものがあります:

  • cache — デバイスのキャッシュ。

  • capacity — デバイスの容量。512バイトブロック単位。

  • driver — デバイスを制御するために使用するドライバとバージョン。

  • geometry — デバイスの物理的、かつ論理的ジオメトリ。

  • mediadiskなどのデバイスのタイプ。

  • model — デバイスのモデル名か番号。

  • settings — デバイスの現在の一連のパラメータ。 このファイルには通常、非常に多くの役に立つ技術情報が保存されています。 標準的なIDEハードディスクのsettingsファイル例は次のとおりです。

    name                value          min          max          mode
    ----                -----          ---          ---          ----
    bios_cyl            784            0            65535        rw
    bios_head           255            0            255          rw
    bios_sect           63             0            63           rw
    breada_readahead    4              0            127          rw
    bswap               0              0            1            r
    current_speed       66             0            69           rw
    file_readahead      0              0            2097151      rw
    ide_scsi            0              0            1            rw
    init_speed          66             0            69           rw
    io_32bit            0              0            3            rw
    keepsettings        0              0            1            rw
    lun                 0              0            7            rw
    max_kb_per_request  64             1            127          rw
    multcount           8              0            8            rw
    nice1               1              0            1            rw
    nowerr              0              0            1            rw
    number              0              0            3            rw
    pio_mode            write-only     0            255          w
    slow                0              0            1            rw
    unmaskirq           0              0            1            rw
    using_dma           1              0            1            rw

5.3.6. /proc/irq/

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

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

/proc/irq/ ディレクトリについての詳細は、次を参照してください。

/usr/src/linux-2.4/Documentation/filesystems/proc.txt

5.3.7. /proc/net/

このディレクトリでは、さまざまなネットワークのパラメータと統計情報を包括的に表示します。このディレクトリ配下の各ファイル及び仮想ファイルには、 システムのネットワーク設定について記載されています。 以下は、/proc/net/ディレクトリ一覧の一部です。

5.3.8. /proc/scsi/

このディレクトリは、/proc/ide/ディレクトリと類似していますが、 これは、SCSIデバイス接続のディレクトリです。

このディレクトリの主要なファイルは、/proc/scsi/scsiです。ここには、 認識されたSCSIデバイスすべての一覧が保存されます。この一覧からデバイスのタイプ、 それと共にモデル名、ベンダー、SCSIチャンネルとIDデータが利用できます。

たとえば、システムに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ドライバには、/proc/scsi/配下に 独自のディレクトリがあります。ここには、そのドライバを使用する各SCSIコントローラ固有 のファイルがあります。上記の例では、2つのドライバが使用されているので、 aic7xxxディレクトリとmegaraidディレクトリが 存在します。各ディレクトリ内のファイルには、通常、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 デバイスへの転送速度、及び、そのデバイスが読み取り/書き込みするファイルの量とサイズ についての詳細な統計情報がわかります。例えば、このコントローラは 20 メガバイト/秒でCD-ROMと通信しているが、テープドライブは 10 メガバイト/秒で通信していることがわかります。

5.3.9. /proc/sys/

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

警告警告
 

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

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

特定のファイルが設定可能なのか、情報提供するだけなのかを判断する方法として、 シェルプロンプトで-lを付けて一覧を表示させます。 ファイルが書き込み可能であれば、それを使用してカーネルを設定することができます。 たとえば、/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 (オフ)から 1 (オン)に変更されます。

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

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

注意注記
 

echoコマンドを用いて行った設定変更は、 システムが再起動されると失われます。システムが再ブートした後にも設定変更を有効にするには、 項5.4を参照してください。

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

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

5.3.9.2. /proc/sys/fs/

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

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

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

  • dentry-state — ディレクトリキャッシュのステータスを提供します。このファイルは以下のようになっています。

    57411	52939	45	0	0	0

    1番目の数はディレクトリキャッシュエントリの総数を示し、2番目の数は未使用エントリ数を示します。 3番目の数はディレクトリの開放から再要求できるまでの秒数を示しています。4番目の数は現在システムが 要求しているページ数です。最後の2つの数は未使用で、現在0のみを表示します。

  • dquot-nr — キャッシュされたディスククォータ(割り当て)エントリの最大数を表示します。

  • file-max — カーネルが割り当てるファイルハンドルの最大数を表示します。このファイルの値を大きくすると、利用可能なファイルハンドルの不足によるエラーを解消することができます。

  • file-nr — 割り当てられたファイルハンドル数、使用されたファイルハンドル数、 ファイルハンドルの最大数を表示します。

  • overflowgidoverflowuid — 16ビットグループIDとユーザーIDを サポートするだけのファイルシステムと共に使用するため、それぞれ固定グループIDとユーザーIDを定義します。

  • super-max — 利用可能なスーパーブロックの最大数を制御します。

  • super-nr — 使用中のスーパーブロックの現在数を表示します。

5.3.9.3. /proc/sys/kernel/

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

  • acct — ログがあるファイルシステム上で利用可能な空き領域の割合に基づき、プロセスアカウンティングの休止を制御します。デフォルトでは、ファイルは以下のようになっています。

    4	2	30

    1番目の値がロギングのリジュームに必要な空き領域の割合を決定するのに対し、 2番目の値はロギングがサスペンドした場合の空き領域のしきい値(スレッシュホールド)の割合を設定します。 3番目の値はファイルシステムがロギングをサスペンドするかリジュームするかを確認するためにカーネルがポーリングする間隔を秒単位で設定します。

  • cap-boundケーパビリティバウンディング設定を制御します。 システム上の任意のプロセスが実行可能なケーパビリティの一覧を提供します。ここに表示されないケーパビリティについては、 どのような特権が与えられていても、そのプロセスを実行することはできません。ブートプロセス時に少なくともあるポイント から以降は、特定の事項が生じないようにすることでシステムの安全をさらに確保する基本姿勢です。

    この仮想ファイルの値に関する有効な一覧は/usr/src/linux-2.4/include/linux/capability.hで 御覧下さい。ケーパビリティバウンディングに ついての詳細は、以下のオンライン URLで確認して下さい。

    http://lwn.net/1999/1202/kernel.php3
  • ctrl-alt-delinitを使用し[Ctrl]-[Alt]-[Delete]キーでコンピュータをやさしく再起動する (値0)か、ダーティバッファをディスクに同期化せず直ちに強制再起動する (値1)かを制御します。

  • domainnameexample.comなどシステムのドメイン名を 設定することができます。

  • hostnamewww.example.comなどシステムのホスト名を 設定することができます。

  • hotplug — システムが設定変更を検出した場合に使用するユーティリティを設定します。これは主としてUSBとカードバスPCIで使用されます。 /sbin/hotplugのデフォルト値は、 この役割を果たすために新しいプログラムをテストする場合をのぞいて変更してはいけません。

  • modprobe — カーネルモジュールのロードに使用されるプログラムの場所を設定します。 デフォルト値は/sbin/modprobeです。これは、カーネルスレッドがkmod をコールする時に モジュールをロードするためにkmodがコールすることを意味します。

  • msgmax — プロセス間で送信されるメッセージの最大サイズを設定します。デフォルトは8192バイトに 設定されています。プロセス間のキューメッセージはスワップできない カーネルメモリに格納されるので、この値を大きくする場合は注意してください。msgmaxが増大すると、システムに対するRAMの要求も増大することになります。

  • msgmnb — 単一メッセージキューの最大バイト数を設定します。デフォルトは 16384です。

  • msgmni — メッセージキュー識別子の最大数を設定します。 デフォルトは16です。

  • osrelease — Linuxカーネルリリース番号を一覧表示します。このファイルを 変更するにはカーネルソースを変更し再コンパイルするしかありません。

  • ostype — オペレーティングシステムの種類を表示します。デフォルトでは、 このファイルはLinuxに設定されています。この値を変更するには カーネルソースを変更し再コンパイルするしかありません。

  • overflowgidoverflowuid — 16ビットのグループIDと ユーザーIDしかサポートしないアーキテクチャ上でシステムコールと共に使用するために、それぞれ固定グループIDと ユーザーIDを定義します。

  • panic — カーネルパニックが生じたときカーネルがシステムの再起動を延期する秒数を定義します。デフォルトでは、パニック後に自動再起動しないよう 0に設定されています。

  • printk — このファイルは、印刷かロギングエラーメッセージに関するさまざまな 設定を制御します。カーネルがレポートするエラーメッセージにはメッセージの重要度を定義する ログレベルが含まれています。ログレベル値の意味は以下のよう順で分類されます:

    • 0 — カーネルエマージェンシー。システムを使用できません。

    • 1 — カーネル通報。直ちに何らかの対策を講じる必要があります。

    • 2 — カーネルの状態が危機にあるとみなされます。

    • 3 — 一般カーネルエラー状況。

    • 4 — 一般カーネル警告状況。

    • 5 — 正常だが重大な状況にあるというカーネル通知

    • 6 — カーネル情報メッセージ。

    • 7 — カーネルデバッグレベルメッセージ。

    printkファイルには4つの値があります。

    6     4     1     7

    これらの値は、それぞれ異なるエラーメッセージ処理方法を定義します。1番目の値は コンソールログレベルと呼ばれ、コンソールに出力される 優先度が最も低いメッセージを定義します(優先度が低いほどログレベル数が大きいことに注意)。2番目の値は、メッセージに添付される明確なログレベルがないデフォルトのログレベルを設定します。 3番目の値はコンソールのログレベルでは最低限のログレベル設定をします。最後の値は コンソールログレベルのデフォルト値を設定します。

  • The random ディレクトリ — カーネルのための乱数生成に関連した多数の値が表示されます。

  • rtsig-max — システムが1度にキューに入れるPOSIXリアルタイムシグナルの最大数を設定します。 デフォルト値は1024です。

  • rtsig-nr — カーネルがキューにしたPOSIXリアルタイムシグナルの現在数を表示します。

  • sem — このファイルはカーネル内のセマフォシグナルを設定します。 セマフォは特定プロセスの利用を制御するために使用されるSystem V IPCオブジェクトです。

  • shmall — システム上で1度に使用可能な共有メモリの合計(単位はバイト)を設定します。 この値はデフォルトでは2097152に設定されています。

  • shmmax — カーネルが許可する最大共有メモリセグメントのサイズ(単位はバイト)を設定します。 この値はデフォルトでは33554432に設定されています。ただし、カーネルは これ以上の値でもサポートします。

  • shmmni — システム全体の共有メモリセグメントの最大数を設定します。(単位はバイト)。 この値はデフォルトでは4096です。

  • sysrq — この値が、デフォルトの0以外の値に設定されている場合、 システム要求キーをアクティブにします。

    システム要求キーを使用すると、単純なキーコンビネーションですばやくカーネルに入力 するができます。例えばシステム要求キーを使用することにより、システムの即時終了/再起動、 マウントした全ファイルシステムの同期化、 重要な情報のコンソールへのダンプなど実行することができます。システム要求キーを使用するには、type [Alt]-[SysRq]-[<system request code>]を入力してください。 <system request code>は 次のシステム要求コードの1つと置き換えてください。

    • r —キーボードのrawモードを無効にし、XLATE (全キーの[Alt][Ctrl][Shift]などの修飾キー を認識しない制限されたキーボード)モードを設定します。

    • k — 仮想コンソールでのアクティブなプロセス全てを中止します。 これは安全アクセス キー (SAK)とも呼ばれ、 ユーザー名やパスワードを盗むトロイの木馬のコピーではなく initからのログイン プロンプトであることを確認するのに よく使われます。

    • b — ファイルシステムのアンマウントやシステム付随のディスクを同期化をしないままカーネルをリブート します。

    • c — ファイルシステムのアンマウントやシステム付随のディスクを同期化をしないまま システムをクラッシュさせます。

    • o — システムを終了します。

    • s — システム付随のディスクを同期化します。

    • u — 全ファイルシステムを読み取り専用としてアンマウントまたは再マウントします。

    • p — 全フラグと全レジスタをコンソールへ出力します。

    • t — プロセス一覧をコンソールへ出力します。

    • m — メモリ統計をコンソールへ出力します。

    • 0から9 — コンソールのログレベルを設定します。

    • e — SIGTERMを使用するinit以外のプロセスを全て中止します。

    • i — SIGKILLを使用するinit以外のプロセスを全て中止します。

    • l — SIGKILLを使用するプロセス全てを中止します。(initを含む) このシステム要求キーコードを実行するとシステムは使用できない状態になります。

    • h — ヘルプ テキストを表示します。

    この機能は 開発カーネルを使用している時やシステムがフリーズした時に便利です。

    注意注意
     

    システム要求キーの機能は、使用していないコンソールが攻撃者にシステムへのアクセス を許可してしまう恐れがあるため、セキュリティ上危険であるとみなされます。 このため、デフォルトではオフになっています。

    システム要求キーの詳細については、 /usr/src/linux-2.4/Documentation/sysrq.txt を参照してください。

  • sysrq-key — システム要求キーのキーコードを定義します (デフォルトは84です)

  • sysrq-sticky — システム要求キーのキーコンビネーションかどうか定義します。 許可された値は次の通りです。

    • 0[Alt]-[SysRq] とシステム要求コードを同時に押さなければいけません。 これがデフォルト値となります。

    • 1[Alt]-[SysRq]を同時に押さなければいけませんが、 システム要求コードは/proc/sys/kernel/sysrq-timerに指定された秒数以内ならいつ押してもかまいません。

  • sysrq-timer — システム要求コードを押すまでに経過可能な秒数を指定します。デフォルト値は10です。

  • tainted — 非GPLモジュールがロードされているかを表示します。

    • 0 — 非GPLモジュールはロードされていません。

    • 1 — GPLライセンスのないモジュール(ライセンスのないモジュールを含む) が1つ以上ロードされています。

    • 2 — 1つ以上のモジュールがinsmod -f によって強制的にロードされています。

  • threads-max — カーネルが使用するスレッドの最大数を設定します。 デフォルト値は 2048です。

  • version — カーネルが最後にコンパイルされた日付と時間を表示します。 #3など、このファイルの最初にあるフィールドはカーネルがソースベースから コンパイルされた回数に関係しています。

5.3.9.4. /proc/sys/net/

このディレクトリには、さまざまなネットワーキング事項に関係するサブディレクトリが含まれています。 カーネルのコンパイル時の構成により、appletalk/ethernet/ipv4/ipx/ipv6/など、利用可能な異なるディレクトリがここで作成されます。 これらのディレクトリ配下でファイルを変更することにより、管理者は実行中のシステム上の ネットワーク設定を調節することができます。

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

/proc/sys/net/core/ディレクトリには、カーネルとネットワークレイヤーとの 相互作用を制御するさまざまな設定が含まれています。その中で最も重要なファイルは次のように なります:

  • message_burst — 新しい警告メッセージを書き込むために必要な時間を10分の1秒単位で設定します。この設定は、サービス停止 (DoS)攻撃を防止するために使用されます。 デフォルトの設定は50です。

  • message_cost — すべての警告メッセージに費用を課します。 このファイルの値(デフォルトは5)が大きいほど、 警告メッセージは無視される ことが多くなります。DoS 攻撃を防止するために使用されます。

    DoS攻撃の目的は、攻撃対称のシステムに大量の要求をかけて、エラーを発生させ、そのディスク パーティションをログファイルで満杯にするか、又はこのエラーログの処理にシステムリソースの 全てを要求することです。message_burstmessage_costの 設定は、使用するシステムが受入可能なリスクとロギング全体のニーズに基づいて変更できるよう設計 されています。

  • netdev_max_backlog — 特定のインターフェイスがカーネル処理速度以上のパケットを 受け取った場合、キューに入れることができるパケットの最大数を設定します。このファイルのデフォルト値は 300です。

  • optmem_max — ソケットごとに許可された補助バッファの最大サイズを設定します。

  • rmem_default — 受け取りソケットバッファのデフォルトサイズ(単位はバイト)を 設定します。

  • rmem_max — 受け取りソケットバッファの最大サイズ(単位はバイト)を設定します。

  • wmem_default — ソケットバッファ送信のデフォルトサイズ(単位はバイト)を設定します。

  • wmem_max — ソケットバッファ送信の最大サイズ(単位はバイト)を設定します。

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

注意注意
 

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

以下に、/proc/sys/net/ipv4/ディレクトリ配下の重要なファイル のいくつかを一覧にします。

  • icmp_destunreach_rateicmp_echoreply_rateicmp_paramprob_rateicmp_timeexeed_rate — 特定の条件下でホストに対する最大ICMP送信パケットレートを 100分の1秒単位で設定します。0に設定すると遅延がなくなるのでお勧めできません。

  • icmp_echo_ignore_allicmp_echo_ignore_broadcasts — カーネルがあらゆるホストから来るものや、 ブロードキャストアドレスとマルチキャストアドレスのみから生じるICMP ECHOパケットを無視できるようにします。 カーネルは0でパケットに応答し、1で 無視します。

  • ip_default_ttl — デフォルトのTTL(Time To Live)を設定します。 これはパケットが目的地に到着する前にホップする回数を制限します。この値を大きくするとシステムパフォーマンスが 低下する可能性があります。

  • ip_forward — システム上のインターフェイスがパケットを互いに転送することを許可します。 デフォルトでは、0に設定されています。このファイルを1に セットすると、ネットワークパケットを転送できます。

  • ip_local_port_range — ローカルポートが必要なときTCPかUDPで使用するポートの範囲を指定します。1番目の数は使用する最小ポートで、2番目の数は最大ポートを指定します。デフォルトの1024??4999より多いポートを必要とすることが予想されるシステムでは、32768??61000の範囲を使用します。

  • tcp_syn_retries — システムが接続を試行中にSYNパケットを再伝送する回数を制限します。

  • tcp_retries1 — 着信接続に応じることが許可された再伝送回数を設定します。 デフォルトは3です。

  • tcp_retries2 — 許可されたTCPパケットの再伝送回数を設定します。 デフォルトは15です。

The /usr/src/linux-2.4/Documentation/networking/ip-sysctl.txt ファイルには、/proc/sys/net/ipv4/ディレクトリで利用できる ファイルとオプションの総合的一覧があります。

/proc/sys/net/ipv4/ディレクトリ配下には他の多くのディレクトリが存在し、それぞれがネットワークスタックの異なる局面を扱います。 /proc/sys/net/ipv4/conf/ディレクトリによって、 各システムインターフェイスは異なる方法で設定することができます。 これには、(/proc/sys/net/ipv4/conf/default/サブディレクトリの) 未設定デバイスの為のデフォルト設定の使用、(/proc/sys/net/ipv4/conf/all/サブディレクトリの)特別な設定をすべて上書きする設定などが含まれます。

/proc/sys/net/ipv4/neigh/ディレクトリには、システムに直接接続されている ホスト(隣接ネットワークと呼ぶ)との通信の為の設定があり、少々遠いシステムの為の別の設定も 含まれています。

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

これらのディレクトリや設定ファイルの値に関する詳細は以下にあります。

/usr/src/linux-2.4/Documentation/filesystems/proc.txt

5.3.9.5. /proc/sys/vm/

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

以下のファイルは、通常/proc/sys/vm/ディレクトリにあるものです:

  • bdflushbdflushカーネル デーモンに関連する値を設定します。

  • kswapd — カーネルスワップアウトデーモンkswapdの値を設定します。このファイルには3つの値があります。

    512	32	8

    1番目の値は、kswapdが1度の試行で解放にしようとするページの最大数を設定します。この値が大きいほど、カーネルは積極的にページを解放しようとします。 2番目の値は、kswapdが 1ページ分の解放試行をする最小回数を設定します。 3番目の値は、kswapdが1度の試行で書き込もうとするページ数を設定します。 この最後の値を適正に調節すると、カーネルにページを大量に書き込みディスク検索を最小限にするよう 命じることで、システムが多くのスワップ領域を使用しパフォーマンスを改善することができます。

  • max_map_count — プロセスが持つメモリマップエリアの最大数を設定します。 ほとんどの場合、デフォルト値として65536が適切です。

  • hugetlb_pool — hugepageのサイズをメガバイト単位で指定します。 hugepage—大きい、物理的に連続するメモリページ。 このようなページは 大きなTLB仮想メモリのマッピングの作成に使用され、 この大きなTLB仮想メモリのマッピングは RAM 集中型のデータベースアプリケーションに使用されます。TLBはこのような仮想メモリのマッピングのために設計された 特別なCPU内キャッシュです。

    この機能はランタイム時に調節することができますが、 /proc/meminfoMemFreeフィールドが 低い時にプールが増大すると、断片化の問題に対して敏感になります。 そのため、/etc/sysctl.confに新しい設定を格納し、 リブートする必要がある時があります。 sysctlの情報は 項5.4を参照してください。

    hugepageの設定についての詳細は/usr/src/linux-2.4/Documentation/vm/hugetlbpage.txt を参照してください。

    誓要項目重要
     

    hugetlbpage.txtに記載されているにもかかわらずファイル/proc/sys/vm/nr_hugepages は Red Hat Enterprise Linux内には存在しません。代わりにhugetlb_poolを使用して システムが使用できる hugepage数を設定してください。また、nr_hugepagesはhugepageの単位を使用し、 hugetlb_poolはhugepageをメガバイト単位で設定することを 忘れないでください。

  • overcommit_memory — 大きいメモリ要求を許可/拒否する状態を設定します。 次の3つのモードが使用できます。

    • 0 — カーネルは利用可能なメモリ容量や明らかに無効な要求を推測し、 経験則なメモリ オーバーコミット 処理を実行します。残念ながらメモリは精密なアルゴリズムではなく、経験則 なアルゴリズムを使用しているため、この設定によって システムがオーバーロードする時があります。この設定がデフォルトとなっています。

    • 1 — カーネルはメモリのオーバーコミット処理を行ないません。 この設定ではメモリオーバーロードの可能性が高まりますが、 同時にメモリ集中型のタスク(科学系のソフトウェアから実行されるようなタスク) のパフォーマンスも向上されます。

    • 2 — 全スワップと/proc/sys/vm/overcommit_ratioで指定された パーセント値の物理RAMとなるメモリに対して、カーネルからの要求はできません。 メモリオーバーロードのリスクを軽減したい場合に適切な設定です。

      注意注記
       

      スワップエリアが物理メモリ大きいシステムのみ、この設定をお推めします。

  • overcommit_ratio/proc/sys/vm/overcommit_memory2に設定されている場合に 考慮される物理RAMをパーセントで指定します。 デフォルト値は50です。

  • pagecache — ページキャッシュが使用する全システムメモリをパーセント値で制御します。 このファイルの典型的な出力は次の通りです。

    1       15      100

    最初の値はバッファとページキャッシュメモリとして使用される最小のメモリ容量を設定 します。 真中の値はバッファとページキャッシュメモリ専用のシステムメモリをパーセント値で 設定し、一般的な空きメモリ不足を補うため、 メモリ管理サブシステムが他のメモリより多くのバッファーキャッシュを削除します。 最後の値はバッファメモリとして使用される最大のメモリ容量を指定しますが、 まだ導入されていません。

  • page-cluster — 1度で読み取るページ数を設定します。 デフォルト値は3で、 実際には16ページになります。これはほとんどのシステムで適切な値です。

  • pagetable_cache — プロセッサベース単位でキャッシュされるページテーブル数を 制御します。1番目と2番目の値は、それぞれ予備配置されるページテーブルの最小数と最大数になります。

/usr/src/linux-2.4/Documentation/sysctl/vm.txtファイルには、 こうしたファイルに関する追加情報が含まれています。

5.3.10. /proc/sysvipc/

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

5.3.11. /proc/tty/

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

Linuxには、3種類のttyデバイスがあります。シリアルデバイスは、モデムやシリアルケーブルなどを使用するシリアル接続に使用されます。仮想端末は、システムコンソールで[Alt]-[<F-key>]キーを押すと利用可能な仮想コンソールなどの 一般のコンソール接続を作成します。 疑似端末は、XFree86などの、より高いレベルのアプリケーションで使用される双方向コミュニケーションを作成します。ドライバーファイルは、使用中の現在の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ファイルに格納されます。 詳細情報はldisc/ディレクトリ配下にあります。