カーネルに関するよく使用される情報のグループは/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プロセスディレクトリは消えます。
各プロセスディレクトリには次のファイルがあります:
cmdline — プロセスを開始する時に発行されるコマンドを含みます。
cwd — そのプロセスで現在動作しているディレクトリへのシンボリックリンク。
environ — プロセスの環境変数の一覧を 提供します。環境変数はすべて大文字で、値は小文字で表されます。
exe — このプロセスの実行可能ファイルへのシンボリックリンク。
fd — 特定プロセスのファイル記述子すべてが保存されているディレクトリ。 これらは番号の付けられたリンクで提示されます:
total 0 lrwx------ 1 root root 64 May 8 11:31 0 -> /dev/null lrwx------ 1 root root 64 May 8 11:31 1 -> /dev/null lrwx------ 1 root root 64 May 8 11:31 2 -> /dev/null lrwx------ 1 root root 64 May 8 11:31 3 -> /dev/ptmx lrwx------ 1 root root 64 May 8 11:31 4 -> socket:[7774817] lrwx------ 1 root root 64 May 8 11:31 5 -> /dev/ptmx lrwx------ 1 root root 64 May 8 11:31 6 -> socket:[7774829] lrwx------ 1 root root 64 May 8 11:31 7 -> /dev/ptmx |
maps — このプロセスに関連する各種の実行可能ファイルとライブラリファイルへのメモリマップの一覧です。 このファイルはプロセスの複雑度によってかなり長くなる場合があります。sshdプロセスのサンプル出力は次のように開始されます。
08048000-08086000 r-xp 00000000 03:03 391479 /usr/sbin/sshd 08086000-08088000 rw-p 0003e000 03:03 391479 /usr/sbin/sshd 08088000-08095000 rwxp 00000000 00:00 0 40000000-40013000 r-xp 00000000 03:03 293205 /lib/ld-2.2.5.so 40013000-40014000 rw-p 00013000 03:03 293205 /lib/ld-2.2.5.so 40031000-40038000 r-xp 00000000 03:03 293282 /lib/libpam.so.0.75 40038000-40039000 rw-p 00006000 03:03 293282 /lib/libpam.so.0.75 40039000-4003a000 rw-p 00000000 00:00 0 4003a000-4003c000 r-xp 00000000 03:03 293218 /lib/libdl-2.2.5.so 4003c000-4003d000 rw-p 00001000 03:03 293218 /lib/libdl-2.2.5.so |
mem — プロセスが保持しているメモリ。 このファイルはユーザーから読み取れません。
root — プロセスのルートディレクトリへのリンク。
stat — プロセスのステータス。
statm — プロセスが使用しているメモリのステータス。 /proc/statmファイルの例は次のとおりです:
263 210 210 5 0 205 0 |
7つの列はプロセスの異なるメモリ統計情報に関連しています。表示されている順に、 左から右に使用メモリの異なる側面をレポートしています:
プログラム合計サイズ。Kバイト単位。
メモリ部分のサイズ。Kバイト単位。
共有ページ数。
コードのページ数。
データ/スタックのページ数。
ライブラリのページ数。
ダーティなページ数。
status — statやstatmより読みやすい形式でプロセスのステータスを提供します。sshdの出力例は次のようになります。
Name: sshd State: S (sleeping) Tgid: 797 Pid: 797 PPid: 1 TracerPid: 0 Uid: 0 0 0 0 Gid: 0 0 0 0 FDSize: 32 Groups: VmSize: 3072 kB VmLck: 0 kB VmRSS: 840 kB VmData: 104 kB VmStk: 12 kB VmExe: 300 kB VmLib: 2528 kB SigPnd: 0000000000000000 SigBlk: 0000000000000000 SigIgn: 8000000000001000 SigCgt: 0000000000014005 CapInh: 0000000000000000 CapPrm: 00000000fffffeff CapEff: 00000000fffffeff |
この出力の中の情報には、プロセスの名前とIDのほか、ステータス(S (sleeping)、 R(running))、プロセスなどを実行しているユーザー/グループID、メモリ使用率に関する詳細が含まれています。
このディレクトリには、システムで利用できるさまざまなバスの特定情報が収納されています。たとえば、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 |
このディレクトリにはカーネルが使用する特定のドライバについての情報があります。
ここにある一般的なファイルは、rtcで、システムのリアルタイムクロック(RTC)用のドライバからの出力を提供します。この RTC というデバイスは、システムがオフになっている間、時計を動かしています。/proc/driver/rtcの出力例は次のようになります:
rtc_time : 16:21:00 rtc_date : 2004-08-31 rtc_epoch : 1900 alarm : 21:16:27 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/share/doc/kernel-doc-<version>/Documentation/rtc.txt
このディレクトリは、エクスポートされるファイルシステムを表示します。NFSサーバーを稼働している場合、cat /proc/fs/nfs/exportsと入力すると、共有されているファイルシステムとそれらのファイルシステムへの権限を表示します。NFS でのファイルシステムの共有に関する詳細は章9章 で参照してください。
このディレクトリにはシステム上のIDEデバイスについての情報が含まれています。各IDEチャンネルは、 /proc/ide/ide0や/proc/ide/ide1などの 個別ディレクトリとして表されます。また、driversファイルが利用するとIDEチャンネル上で使用するさまざまなドライバのバージョン番号を知ることができます。
ide-floppy version 0.99.newide ide-cdrom version 4.61 ide-disk version 1.18 |
また、多くのチップセットは、チャンネルを介して接続されているドライブに関する追加情報をこのディレクトリ内で提供します。たとえば、汎用の 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/ディレクトリには、これら各デバイスディレクトリの シンボリックリンクがあります。 |
各デバイスディレクトリには、一連の情報と統計値があります。これらディレクトリの内容は、 接続されているデバイスのタイプにより変わります。多くのデバイスに共通して役に立つファイルには、 次のようなものがあります:
cache — デバイスのキャッシュ。
capacity — デバイスの容量。512バイトブロック単位。
driver — デバイスを制御するために使用するドライバとバージョン。
geometry — デバイスの物理的、かつ論理的ジオメトリ。
media — diskなどのデバイスのタイプ。
model — デバイスのモデル名か番号。
settings — デバイスの現在の一連のパラメータ。このファイルには通常、非常に多くの役に立つ技術情報が保存されています。 標準的な IDE ハードディスクのsettingsファイル例は次の様になります:
name value min max mode ---- ----- --- --- ---- acoustic 0 0 254 rw address 0 0 2 rw bios_cyl 38752 0 65535 rw bios_head 16 0 255 rw bios_sect 63 0 63 rw bswap 0 0 1 r current_speed 68 0 70 rw failures 0 0 65535 rw init_speed 68 0 70 rw io_32bit 0 0 3 rw keepsettings 0 0 1 rw lun 0 0 7 rw max_failures 1 0 65535 rw multcount 16 0 16 rw nice1 1 0 1 rw nowerr 0 0 1 rw number 0 0 3 rw pio_mode write-only 0 255 w unmaskirq 0 0 1 rw using_dma 1 0 1 rw wcache 1 0 1 rw |
このディレクトリを使用してIRQをCPUアフィニティに設定すると、特定のIRQを1つのCPUにのみ接続できます。 また、別の方法としてCPUがどのIRQも処理しないように設定することもできます。
各IRQには独自のディレクトリがあり、各IRQを異なる設定にできます。/proc/irq/prof_cpu_maskファイルは IRQディレクトリのsmp_affinityファイルのデフォルト値を保存したビットマスクです。 smp_affinityの値で、特定のIRQを処理するCPUを指定します。
/proc/irq/ ディレクトリについての詳細は、次のインストール済のドキュメントを参照してください:
/usr/share/doc/kernel-doc-<version>/Documentation/filesystems/proc.txt |
このディレクトリでは、さまざまなネットワークのパラメータと統計情報を包括的に表示します。このディレクトリ配下の各ファイル及び仮想ファイルには、 システムのネットワーク設定について記載されています。 以下は、/proc/net/ディレクトリ一覧の一部です。
arp — カーネルのARPテーブルがリストアップされています。 このファイルはハードウェアアドレスをシステム上のIPアドレスに接続する際、特に便利です。
atmディレクトリ — このディレクトリは以下のファイルには、 非同期転送モード(ATM)の設定と統計情報が保存されています。 このディレクトリは、ATMネットワーキングとADSLカードでおもに使用します。
dev — システム上に設定されているさまざまなネットワークデバイスと送受信の統計情報の一覧を表示します。このファイルで、各インターフェイスが送受信したバイト数、受信送信パケット数、表示エラー数、損失パケット数などを表示します。
dev_mcast — リスニングしている各デバイスの レイヤ2マルチキャストグループを一覧表示します。
igmp — このシステムが参加しているIPマルチキャストアドレスの一覧を表示します。
ip_conntrack — IP 接続を転送しているマシンの ネットワーク接続記録を一覧表示します。
ip_tables_names — 使用中のiptablesの種類を一覧表示します。このファイルは、iptablesがシステム上でアクティブで、次のような値を1つ以上含んでいる場合にのみ存在します: filter、mangle、又はnat。
ip_mr_cache — マルチキャストルーティングキャッシュの一覧。
ip_mr_vif — マルチキャスト仮想インターフェイスの一覧。
netstat — TCPタイムアウト、送受信済みSYNクッキーなどの広範で詳細なネットワーキング 統計情報が含まれています。
psched — グローバルパケットスケジューラパラメータの一覧。
raw — 生のデバイス統計情報の一覧。
route — カーネルのルーティングテーブルを一覧表示します。
rt_cache — 現在のルーティングキャッシュが保存されています。
snmp — 使用中の各種ネットワーキングプロトコルのSNMP(Simple Network Management Protocol) データの一覧。
sockstat — ソケット統計情報を提供します。
tcp — 詳細なTCPソケット情報が保存されています。
tr_rif — トークンリングRIFルーティングテーブル。
udp — 詳細なUDPソケット情報が保存されています。
unix — 現在使用されているUNIXドメインソケットの一覧を表示します。
wireless — ワイヤレスインターフェイスデータの一覧を表示します。
このディレクトリは、/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ディレクトリが存在します。各ディレクトリ内のファイルには、通常、I/Oアドレス範囲、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 メガバイト/秒で通信していることがわかります。
/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/ディレクトリには、実行カーネルの異なる側面を制御するそれぞれ異なった サブディレクトリが含まれています。
このディレクトリはシステム上の特定のデバイス用パラメータを提供します。ほとんどのシステムには少なくとも2つのディレクトリ、cdromとraidがありますが、カスタマイズされたカーネルはそれ以外にも、複数のデバイスドライバ間で1個のパラレルポートを共有できるようにするparportなどのディレクトリを持つことができます。
cdromディレクトリにはinfoと呼ばれるファイルがあります。多くの重要な CD-ROMパラメータを提示します:
CD-ROM information, Id: cdrom.c 3.20 2003/12/17 drive name: hdc drive speed: 48 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 Can read MRW: 0 Can write MRW: 0 Can write RAM: 0 |
このファイルを一瞥すると少なくともカーネルには未知のCD-ROMのクオリティを知ることができます。 システム上で複数のCD-ROMが利用できる場合、各デバイスにはそれぞれの情報列が与えられます。
autocloseやcheckmediaなど、/proc/sys/dev/cdrom内のさまざまなファイルは、システムの CD-ROM を制御するために使用できます。これらの機能をオンまたはオフにするには、echo を用います。
RAID サポートをカーネルにコンパイルした場合には、その中に少なくとも2つのファイル:speed_limit_min と speed_limit_maxを持つ /proc/sys/dev/raid/ ディレクトリが利用できるようになります。こうした設定は、ディスクの再同期化など、入出力の激しいタスクで RAIDデバイスが使用される場合の速度の調節に活用できます。
このディレクトリには、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 — 割り当てられたファイルハンドル数、使用されたファイルハンドル数、 ファイルハンドルの最大数を表示します。
overflowgid とoverflowuid — 16ビットグループIDとユーザーIDを サポートするだけのファイルシステムと共に使用するため、それぞれ固定グループIDとユーザーIDを定義します。
super-max — 利用可能なスーパーブロックの最大数を制御します。
super-nr — 使用中のスーパーブロックの現在数を表示します。
このディレクトリには、カーネルの動作に直接影響するさまざまな異なる設定ファイルが格納されています。最も重要なファイルには以下のようなものがあります。
acct — ログがあるファイルシステム上で利用可能な空き領域の割合に基づき、プロセスアカウンティングの休止を制御します。デフォルトでは、ファイルは以下のようになっています。
4 2 30 |
1番目の値がロギングのリジュームに必要な空き領域の割合を決定するのに対し、2番目の値はロギングがサスペンドした場合の空き領域のしきい値(threshold)の割合を設定します。3番目の値はロギングをサスペンドするかリジュームするかを確認するためにカーネルがファイルシステムをポーリングする間隔を秒単位で設定します。
cap-bound — ケーパビリティバウンディング設定を制御します。 システム上の任意のプロセスが実行可能なケーパビリティの一覧を提供します。ここに表示されないケーパビリティについては、 どのような特権が与えられていても、そのプロセスを実行することはできません。ブートプロセス時に少なくともあるポイント から以降は、特定の事項が生じないようにすることでシステムの安全をさらに確保する基本姿勢です。
この仮想ファイルの値の正しいリストについては、インストールされている以下のドキュメントを参照してください:
/lib/modules/<kernel-version>/build/include/linux/capability.h
ctrl-alt-del — initを使用し
domainname — example.comなどシステムのドメイン名を 設定することができます。
exec-shield — カーネルの Exec Shield 機能を設定します。 Exec Shield ではバッファオーバーフロー攻撃の特定タイプに対する保護を提供します。
この仮想ファイルには2つの可能な値があります:
0 — Exec Shield を無効にします。
1 — Exec Shield を有効します。これがデフォルト値です。
![]() | 重要 |
---|---|
Exec Shield が無効な間に起動したセキュリティに敏感なアプリケーションが稼働している場合、こうしたアプリケーションは Exec Shield を再び有効にしたときに再起動して稼働する必要があります。 |
exec-shield-randomize — メモリ内の各種項目のランダム位置化を有効にします。これにより、潜在的攻撃者によるプログラム位置やメモリ内のデーモンの探索を防止します。プログラムやデーモンが起動する度に毎回、異なるメモリ位置に配置され、決して静的又は固定アドレスにあることはありません。
この仮想ファイルには2つの可能な値があります:
0 — Exec Shield のランダム化を無効にします。これはアプリケーションのデバッグ目的に役に立ちます。
1 — Exec Shield のランダム化を有効にします。これがデフォルトの値です。注記: 効果を出すには、exec-shieldファイルはexec-shield-randomize用に1に設定する必要があります。
hostname — www.example.com などシステムのホスト名を設定することができます。
hotplug — システムが設定変更を検出した場合に使用するユーティリティを設定します。これは主としてUSBとカードバスPCIで使用されます。 /sbin/hotplugのデフォルト値は、この役割を果たすために新しいプログラムをテストする場合をのぞいて変更してはいけません。
modprobe — カーネルモジュールのロードに使用されるプログラムの場所を設定します。 デフォルト値は/sbin/modprobeです。これは、カーネルスレッドがkmod をコールする時に モジュールをロードするためにkmodがコールすることを意味します。
msgmax — プロセス間で送信されるメッセージの最大サイズを設定します。デフォルトは8192バイトに 設定されています。プロセス間のキューメッセージはスワップできない カーネルメモリに格納されるので、この値を大きくする場合は注意してください。msgmaxが増大すると、システムに対するRAMの要求も増大することになります。
msgmnb — 単一メッセージキューの最大バイト数を設定します。デフォルトは 16384です。
msgmni — メッセージキュー識別子の最大数を設定します。 デフォルトは16です。
osrelease — Linuxカーネルリリース番号を一覧表示します。このファイルを 変更するにはカーネルソースを変更し再コンパイルするしかありません。
ostype — オペレーティングシステムの種類を表示します。デフォルトでは、 このファイルはLinuxに設定されています。この値を変更するには カーネルソースを変更し再コンパイルするしかありません。
overflowgid と overflowuid — 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 — このファイルはカーネル内のsemaphoreを設定します。semaphore は特定プロセスの活用を制御するために使用される System V IPCオブジェクトです。
shmall — システム上で1度に使用可能な共有メモリの合計(単位はバイト)を設定します。 この値はデフォルトでは2097152に設定されています。
shmmax — カーネルが許可する最大共有メモリセグメントのサイズ(単位はバイト)を設定します。 この値はデフォルトでは33554432に設定されています。ただし、カーネルは これ以上の値でもサポートします。
shmmni — システム全体の共有メモリセグメントの最大数を設定します。(単位はバイト)。 この値はデフォルトでは4096です。
sysrq — この値が、デフォルトの0以外の値に設定されている場合、システム要求キーをアクティブにします。
システム要求キーを使用すると、単純なキーコンビネーションですばやくカーネルに入力 するができます。例えばシステム要求キーを使用することにより、システムの即時終了/再起動、 マウントした全ファイルシステムの同期化、 重要な情報のコンソールへのダンプなど実行することができます。システム要求キーを使用するには、
r —キーボードの rawモードを無効にし、XLATE (全キーの
k — 仮想コンソールでのアクティブなプロセス全てを停止します。これは安全アクセス キー (SAK)とも呼ばれ、ユーザー名やパスワードを盗むトロイの木馬のコピーではなく initからのログインプロンプトであることを確認するのによく使われます。
b — ファイルシステムのアンマウントやシステム付随のディスクを同期化をしないままカーネルをリブートします。
c — ファイルシステムのアンマウントやシステム付随のディスクを同期化をしないまま システムをクラッシュさせます。
o — システムを終了します。
s — システム付随のディスクを同期化します。
u — 全ファイルシステムを読み取り専用としてアンマウントまたは再マウントを試みます。
p — 全フラグと全レジスタをコンソールへ出力します。
t — プロセス一覧をコンソールへ出力します。
m — メモリ統計をコンソールへ出力します。
0から9 — コンソールのログレベルを設定します。
e — SIGTERMを使用するinit以外のプロセスを全て中止します。
i — SIGKILLを使用するinit以外のプロセスを全て中止します。
l — SIGKILL を使用するプロセス全て(initを含む)を停止します。このシステム要求キーコードを発行した後はシステムは使用できない状態になります。
h — ヘルプ テキストを表示します。
この機能は開発カーネルを使用している時やシステムがフリーズした時に特に便利です。
![]() | 注意 |
---|---|
システム要求キーの機能は、放置状態のコンソールが攻撃者にシステムへのアクセスを与えてしまう恐れがあるため、セキュリティリスクとみなされます。このため、デフォルトではオフになっています。 |
システム要求キーの詳細については、/usr/share/doc/kernel-doc-<version>/Documentation/sysrq.txtを参照してください。
sysrq-key — システム要求キーのキーコードを定義します (デフォルトは84です)
sysrq-sticky — システム要求キーの確立したキーコンビネーションかどうか定義します。承認された値は次の通りです:
0 —
1 —
sysrq-timer — システム要求コードを押すまでに経過可能な秒数を指定します。デフォルト値は10です。
tainted — 非 GPLモジュールがロードされているか示します。
0 — 非GPLモジュールはロードされていません。
1 — GPLライセンスのないモジュール(ライセンスのないモジュールを含む) が1つ以上ロードされています。
2 — 1つ以上のモジュールがinsmod -f によって強制的にロードされています。
threads-max — カーネルが使用するスレッドの最大数を設定します。 デフォルト値は 2048です。
version — カーネルが最後にコンパイルされた日付と時間を表示します。 #3など、このファイルの最初にあるフィールドはカーネルがソースベースから コンパイルされた回数に関係しています。
このディレクトリには、さまざまなネットワーキング事項に関係するサブディレクトリが含まれています。 カーネルのコンパイル時の構成により、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_burstと message_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_rate、icmp_echoreply_rate、icmp_paramprob_rate、 icmp_timeexeed_rate — 特定の条件下でホストに対する最大ICMP送信パケットレートを 100分の1秒単位で設定します。0に設定すると遅延がなくなるのでお勧めできません。
icmp_echo_ignore_all と icmp_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です。
/usr/share/doc/kernel-doc-<version>/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_size、 max_delay、min_delayなど設定の多くはルーティングキャッシュのサイズの 制御に関係しています。ルーティングキャッシュをクリアするには、flushファイルに任意の値を書き込むだけです。
これらのディレクトリや設定ファイルの値に関する詳細は以下にあります。
/usr/share/doc/kernel-doc-<version>/Documentation/filesystems/proc.txt |
このディレクトリは、Linux カーネルの仮想メモリ(VM)サブシステムの設定を援助します。カーネルは仮想メモリを広範囲に及びインテリジェントに使用します。これは一般にスワップ領域と呼ばれます。
以下のファイルは、通常/proc/sys/vm/ディレクトリにあるものです:
block_dump — 全てが有効になっている時にブロックI/O デバッグを設定します。ファイルに対する全ての読み込み/書き込みとブロック汚染(dirtying)作業は適切にログされます。これは、ラップトップのバッテリ節約の為にディスクの回転上昇と回転下降を検査する時に役にたちます。block_dumpが有効な時の全ての出力は、dmesg経由で取り出せます。デフォルトの値は、0です。
![]() | ヒント |
---|---|
カーネルデバッグと同じ時期にblock_dumpが有効な場合は、klogdデーモンは停止するのが賢明でしょう。このデーモンはblock_dumpを原因として間違いのディスク活動を発生します。 |
dirty_background_ratio — 総メモリに対するこの割合でダーティデータのバックグランド writeback を pdflush 経由で開始します。デフォルト値は10です。
dirty_expire_centisecs — ダーティなメモリ内データがライトアウト(writeout)用に十分に古くなる時期を定義します。その期限より長くメモリ内にあるダーティなデータは、次回に pdflush が起動する時にライトアウトされます。デフォルトの値は、百分の1秒の数で表現され、3000となります。
dirty_ratio — ダーティデータの生成の為の総メモリに対するこのパーセンテージで、pdflush を経由してダーティデータのアクティブなライトバック(writeback)を開始します。デフォルト値は40
dirty_writeback_centisecs — pdflush デーモンの起動と起動の間の期間を定義し、定期的にダーティなメモリ内データをディスクにライトアウトします。デフォルトの値は百分の1秒の数で表現され、500となります。
laptop_mode — 出来るかぎり長時間ディスクの回転を下げるようにして、ハードディスクの回転上昇の頻度を最低限に抑えます。これによりラップトップのバッテリー充電量を保存します。全ての将来の I/O プロセスを一緒に統合することにより効率を上げ、これが回転上昇の回数を低減します。デフォルト値は0ですが、ラップトップのバッテリーが使用される場合は自動的に有効になります。
この値は、ユーザーがバッテリーパワーが有効であることを知らされると、acpid デーモンにより自動的に制御されます。ラップトップが ACPI (Advanced Configuration and Power Interface)仕様に対応している限り、ユーザーによる修正や対応は必要ありません。
詳細は、以下のインストール済のドキュメントを参照してください:
/usr/share/doc/kernel-doc-<version>/Documentation/laptop-mode.txt
lower_zone_protection —カーネルが低位置メモリ割り当てゾーンを保護する為にその強要度を決定します。これはhighmemメモリ領域が有効な設定のマシン活用で効果的です。デフォルト値は0で、保護はありません。他の全ての整数値はメガバイト表示で、lowmemメモリはユーザーによる割り当てから保護されます。
詳細は、以下のインストール済のドキュメントを参照してください:
/usr/share/doc/kernel-doc-<version>/Documentation/filesystems/proc.txt
max_map_count — プロセスが持つメモリマップエリアの最大数を設定します。 ほとんどの場合、デフォルト値として65536が適切です。
min_free_kbytes — Linux の VM (virtual memory manager)が最低限のキロバイトを開放するように強制します。VM はこの数値を使用してこのシステム内の各 lowmemゾーン用にpages_minの値を算出します。デフォルト値はマシン上の総メモリ量に対して設定されます。
nr_hugepages — カーネル内の設定済hugetlbページの現在の数量を示します。
詳細は、以下のインストール済のドキュメントを参照してください:
/usr/share/doc/kernel-doc-<version>/Documentation/vm/hugetlbpage.txt
nr_pdflush_threads — 現在実行中の pdflush デーモンの数量を示します。このファイルは読み取り専用でユーザーが変更すべきものではありません。I/O ロードが大きい状況では、カーネルによってデフォルト値の2が増加されます。
overcommit_memory — 大きいメモリ要求を許可/拒否する状態を設定します。 次の3つのモードが使用できます。
0 — カーネルは利用可能なメモリ容量や明らかに無効な失敗要求を推測することにより、試行錯誤的なメモリ オーバーコミット処理を実行します。残念ながらメモリは精密なアルゴリズムではなく、試行錯誤的なアルゴリズムを使用しているため、この設定ではシステムで使用可能なメモリがオーバーロードする時があります。この設定がデフォルトとなっています。
1 — カーネルはメモリのオーバーコミット処理を行ないません。この設定ではメモリオーバーロードの可能性が高まりますが、同時にメモリ集中型のタスク(科学系のソフトウェアから実行されるようなタスク)のパフォーマンスも向上されます。
2 — 全スワップと/proc/sys/vm/overcommit_ratioで指定された パーセント値の物理RAMとなるメモリに対して、カーネルからの要求はできません。 メモリオーバーロードのリスクを軽減したい場合に適切な設定です。
![]() | 注記 |
---|---|
スワップエリアが物理メモリ大きいシステムのみ、この設定をお推めします。 |
overcommit_ratio — /proc/sys/vm/overcommit_memory が2に設定されている場合に 考慮される物理RAMをパーセントで指定します。 デフォルト値は50です。
page-cluster — 1度で読み取るページ数を設定します。 デフォルト値は3で、 実際には16ページになります。これはほとんどのシステムで適切な値です。
swappiness — 1つのシステムが用意すべきスワップを決定します。値が高い程、よりスワップが発生します。デフォルト値はパーセント表示となり、60に設定されます。
全てのカーネルベースのドキュメントは以下のローカルインストールの場所にあります:
/usr/share/doc/kernel-doc-<version>/Documentation/には、追加の情報が含まれています。
このディレクトリにはSystem V IPCリソースに関する情報が含まれています。このディレクトリ内のファイルは、 メッセージ(msg)、セマフォ(sem)、共有メモリ (shm)に対するSystem V IPCコールに関係しています。
このディレクトリにはシステム上で利用可能な現在使用されているttyデバイスに関する情報が格納されています。 従来teletype deviceと呼ばれていたもので、キャラクタベースのデータ端末がttyデバイスと 呼ばれます。
Linuxには、3種類の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/ディレクトリ配下にあります。