この章では,システム環境をカスタマイズする方法を示します。 これから説明する作業の中に,初期インストレーションとシステム構成の際にすでに行っているものもあるかもしれません。 システムに変更が必要になった場合,新たな処理負荷の要求に対応させるため,この作業をいくつか行う必要があるかもしれません。 たとえば,インストレーションの際に,初期スワップ領域 (仮想メモリ) を作成しますが,物理メモリをシステムに追加する場合,それに対応して,スワップ領域を増やす必要が出てくる場合もあります。
この章では,以下の項目について説明します。
システムの実行レベルを初期設定し,制御するために使用する,システム初期化ファイル (3.1 節)
各国語ディレクトリを使って言語および国に固有なプログラムをサポートする方法 (3.2 節)
多国語ユーザ対象のプログラムを開発および実行するプログラマとユーザをサポートする,国際化機能 (3.3 節)
システムのローカルおよびワールドワイドの時間帯情報を管理する,システムの時間帯ディレクトリおよび環境変数 (3.4 節)
Energy Star 規格に準拠した周辺機器およびプロセッサでの電力消費を制御するために設定して使用する,電力管理 (3.5 節)
スワップ領域をカスタマイズする方法。 『システムの構成とチューニング』も参照してください。 性能をチューニングするために役立つ情報が得られます (3.6 節)。
セキュリティおよびネットワーク環境のカスタマイズについては,次のマニュアルを参照してください。
『Tru64 UNIX 概要』では,オペレーティング・システムのセキュリティ・コンポーネントについて簡単に説明しています。
『セキュリティ管理ガイド』と『セキュリティ・プログラミング・ガイド』は,セキュリティ・コンポーネントを扱うユーザ,管理者,およびプログラマにとって,中心となるセキュリティの情報源です。
『ネットワーク管理ガイド:接続編』および『ネットワーク管理ガイド:サービス編』は,システムのネットワーク・コンポーネントをカスタマイズする際に主要な情報源となります。
システム環境を定義したりカスタマイズする場合,プロセスおよび実行レベルの指定と制御を行う特定の初期化ファイルを変更します。 オペレーティング・システムによって,有効な実行レベルと各実行レベルを指定するプロセスを定義した省略時のファイルがテンプレートとして提供されます。 これらのファイルを使用することにより,システム環境を容易に変更またはカスタマイズすることができます。 また,国際規格をサポートする場合は,それぞれの国際規格に対応するファイルの構造と条件に精通している必要があります。
この節では,システム環境の初期化および制御をするためのファイルについて紹介し,それらのファイルの使用方法および変更方法について説明します。
利用できる機能を理解し,その機能を使用するためには,init
プログラムおよびこのプログラムに関連するファイルおよびコマンドについて理解する必要があります。
init
プログラムとその機能についての詳細は,
init
(8)
システム初期化ファイルを変更する前に,省略時の設定の確認,システムにおけるニーズの評価,および各テンプレート・ファイルのコピー作成などを行ってください。 システム・ファイルまたは作業環境に影響するファイルを変更する場合には,問題が発生した場合の対応を考慮しておくことが必要です。 初期化ファイルを変更しても意図した環境が設定されない場合は,カスタマイズに存在する問題を解決している間,省略時のファイルを元に戻しておくことができます。
以下に示すシステム・ファイルおよびディレクトリは,システムの初期化および操作に影響を与えます。
/etc/inittab
重要な初期化ファイルの 1 つで,実行レベルとそれに関連するプロセスを定義し,端末を管理します。 このファイルについては,3.1.1 項で説明します。
/etc/securettys
各端末 (tty
) が root ログインできるかどうかを定義するテキスト・ファイル。
このファイルについては,3.1.1.6 項で説明します。
/sbin/bcheckrc
ブート時のファイル・システムの検査とマウントを指定するシステム初期化コマンド実行スクリプト。 このファイルについては,3.1.1.2 項で説明します。
/sbin/init.d
システムの初期化および有効な実行レベルに関連する実行可能ファイルを含んでいる初期化ディレクトリ。 ディレクトリ構造と内容については,3.1.2.1 項で説明します。
/sbin/rcn
.d
/sbin
ディレクトリには,各実行レベルに対応する個々のサブディレクトリのセットが含まれます。
個々のサブディレクトリには,特定の実行レベルを開始または変更するときにシステムが実行する,リンクされたファイルが含まれています。
利用可能な
/sbin/rcn
.d
ディレクトリには,/sbin/rc0.d
,/sbin/rc2.d
,および
/sbin/rc3.d
の 3 つがあります。
rc
ディレクトリ構造と内容については,3.1.2.2 項,3.1.2.3 項,および3.1.2.4 項で説明します。
/sbin/rcn
特定の実行レベルに対応するコマンド実行スクリプトです。
利用可能な
/sbin/rcn
スクリプトには,/sbin/rc0
,/sbin/rc2
,および
/sbin/rc3
の 3 つがあります。
これらのスクリプトの内容と使用方法については,3.1.2.2 項,3.1.2.3 項,および3.1.2.4 項で説明します。
/etc/rc.config
および
/etc/rc.config.common
実行時構成変数を含んでいるファイルです。
これらの変数は,/sbin/init.d
ディレクトリの中のスクリプトによって,さまざまなサブシステム (たとえば NFS や NTP) を構成するために使用されます。
システム管理者またはプログラムは,rcmgr
コマンドを使用して,/etc/rc.config
ファイル内の変数を定義またはアクセスすることができます。
詳細については,
rcmgr
(8)
/etc/sysconfigtab
動的に構成できるサブシステムについての情報を含むデータベース・ファイルです。 このファイルについては,第 4 章で説明します。
/usr/sbin/getty
端末回線の設定および管理のための実行可能ファイルです。
このプログラムについては,3.1.1.3 項と3.1.1.4 項で説明します。
また,詳しい説明については,
getty
(8)
/etc/gettydefs
端末回線属性を設定および定義するエントリを含んでいるファイル。
このファイルは
getty
によって使用されます。
詳しい説明については,
gettydefs
(4)
/var/spool/cron/crontabs/*
特定プロセスの通常起動または周期的起動に関する設定を定義するエントリが含まれているファイルです。 これらのファイルについての詳しい説明は,3.1.3 項を参照してください。
/var/spool/cron/atjobs/*
特定プロセスの一度限りの起動に関する設定を定義するファイルです。
このファイルについての詳しい説明は,
at
(1)
次に示すファイルには,カーネル構成に関する情報が記述されています。
/usr/sys/conf/NAME
システムによってカーネル構成に組み込まれる構成要素を定義しているテキスト・ファイルです。 通常,NAME 変数にはシステム名を指定します。 このファイルについては,第 4 章で説明します。
/usr/sys/conf/NAME
.list
レイヤード・プロダクトに関する情報の格納,および静的なサブシステムの自動的な構成のために使用されるオプションの構成ファイル。 通常,NAME 変数にはシステム名を指定します。 このファイルについては,第 4 章で説明します。
/usr/sys/conf/param.c
システムのカーネルの構築に使用される調整可能なシステム・パラメータの省略時の値を記述しているテキスト・ファイル。 このファイルについては,第 4 章で説明します。
init
プログラムが実行する最初の処理の 1 つは,/etc/inittab
ファイルの読み取りです。
inittab
ファイルは,初期化プロセスの作成と実行のための命令を
init
プログラムに提供します。
init
プログラムは,実行されるたびに
inittab
ファイルを読み取ります。
通常このファイルには,省略時の初期化命令,各実行レベルにおけるプロセスの作成および制御命令,端末回線の起動を制御する
getty
プロセスに対する命令が含まれています。
オペレーティング・システムは,一般的に初期化プロセスに必要な行エントリを含んだ
/etc/inittab
ファイルをテンプレートとして提供しています。
たとえば,次のような内容の
/etc/inittab
ファイルが提供されています。
is:3:initdefault: ss:Ss:wait:/sbin/rc0 shutdown </dev/console> \ /dev/console 2>&1 s0:0:wait:/sbin/rc0 off < /dev/console > /dev/console 2>&1 fs:23:wait:/sbin/bcheckrc < /dev/console > /dev/console 2>&1 kls:Ss:sysinit:/sbin/kloadsrv < /dev/console > /dev/console 2>&1 hsd:Ss:sysinit:/sbin/hotswapd < /dev/console > /dev/console 2>&1 sysconfig:23:wait:/sbin/init.d/autosysconfig start \ < /dev/console > /dev/console 2>&1 update:23:wait:/sbin/update > /dev/console 2>&1 smsync:23:wait:/sbin/sysconfig -r vfs smoothsync-age=30 > \ /dev/null 2>&1 smsyncS:Ss:wait:/sbin/sysconfig -r vfs smoothsync-age=0 > \ /dev/null 2>&1 it:23:wait:/sbin/it < /dev/console > /dev/console 2>&1 kmk:3:wait:/sbin/kmknod > /dev/console 2>&1 s2:23:wait:/sbin/rc2 < /dev/console > /dev/console 2>&1 s3:3:wait:/sbin/rc3 < /dev/console > /dev/console 2>&1 cons:1234:respawn:/usr/sbin/getty console console vt100
inittab
ファイルは,任意の数の行で構成されます。
inittab
ファイルの各行は 4 つのフィールドで構成されています。
各フィールドはコロン (:
) で区切られています。
inittab
ファイルの各行の構文は次のとおりです。
Identifier:
Runlevel:
Action:
Command
Identifier
このフィールドは,オブジェクト・エントリをユニークなものとして識別します。 このフィールドは 14 文字です。
Runlevel
このフィールドは,オブジェクト・エントリが処理される実行レベルを定義します。
このフィールドは 20 文字です。
Runlevel
変数は,システム内のプロセスの構成に対応しています。
init
コマンドによって生成される個々のプロセスには,1 つまたは複数の実行レベルが割り当てられます。
割り当てられる実行レベルは次のとおりです。
0
停止状態
s
または
S
シングルユーザ状態
2
ネットワーク・サービスなしのマルチユーザ状態
3
ネットワーク・サービス付きのマルチユーザ状態
Runleve
フィールドに 2 つ以上の実行レベルを任意に組み合わせて指定することによって,1 つのプロセスに対して複数の実行レベルを定義することができます。
Action
このフィールドは,指定されたプロセスの処理方法を
init
に指示します。
このフィールドは 20 文字です。
このフィールドには次のようなキーワードを記述します。
respawn
そのプロセスが存在しない場合または停止している場合,init
はそのプロセスを開始します。
プロセスが存在している場合は,init
は何もせずに
inittab
ファイルの走査を続けます。
wait
エントリの実行レベルと一致する実行レベルに入ると,init
はプロセスを開始して,終了するのを待ちます。
この実行レベルにいる限り,init
は
inittab
ファイル内のエントリの読み取りを中断します。
initdefault
init
が最初に呼び出される際にこのキーワードのある行が処理されます。
init
プログラムはこの行を調べて実行レベルを判定します。
このプログラムは実行レベル・フィールドに指定された最上位の実行レベルを初期状態として使用します。
実行レベル・フィールドが空の場合は 0s23 と解釈し,init
は実行レベル 3 に入ります。
inittab
ファイルに
initdefault
キーワードがない場合,init
は初期の実行レベルをオペレータに要求します。
その他のキーワードも利用可能です。
詳細については,
inittab
(4)
Command
これは,最大 1024 文字のデータ・フィールドです。
このフィールドには,sh
コマンドが含まれます。
コマンド・フィールドのエントリには前に
exec
を付けます。
有効な
sh
構文はすべてコマンド・フィールドに記述できます。
コメント文字 (#
) を付けてコメントを挿入することができます。
行継続文字 (\
) を行の終わりに記述することもできます。
/etc/inittab
のエントリを変更または追加する前に,関連するファイルとコマンド実行スクリプトの機能と内容を十分理解してください。
次の項では
/etc/inittab
の使用方法について詳しく説明します。
3.1.1.1 初期化時の省略時実行レベルの指定
init
プログラムは,ブート時に
inittab
ファイルを調べて
initdefault
キーワードを探し,実行レベルの定義を見つけます。
inittab
に
initdefault
のエントリがない場合は,システムは実行レベルの入力を要求します。
上記の
inittab
ファイルの例では,次に示す行で
initdefault
の実行レベルを 3 に設定しています。
実行レベル 3 はネットワーク・サービス付きのマルチユーザ・モードを示します。
is:3:initdefault:
init
プログラムは,inittab
ファイルを調べて
wait
エントリを探します。
上記の
inittab
ファイルの例では,次の行に
wait
エントリが記述されています。
fs:23:wait:/sbin/bcheckrc < /dev/console > /dev/console 2>&1
この場合,init
プログラムは
fs
エントリ用の
/sbin/bcheckrc
スクリプトを呼び出します。
このエントリに関連するプロセスは,実行レベル 2 と 3 で実行されます。
入力はシステム・コンソールから行います (/dev/console
)。
システムおよびプロセスのエラー・メッセージは,コンソールに送られます (>
/dev/console 2>&1
)。
bcheckrc
コマンド実行スクリプトには,ファイル・システムの検査とマウントに関連する手順が含まれています。
詳細については,/sbin/bcheckrc
ファイルを参照してください。
3.1.1.3 コンソール実行レベルの指定
システム管理者またはその他のユーザがシステムにログインするためには,getty
プログラムまたは
xdm
プログラムのいずれかが実行中でなければなりません。
これらのプログラムは,各端末またはワークステーションのログイン・プログラムおよびシェル・プログラムを実行するためのプロセスをセットアップします。
初期の作業の大部分はシステム・コンソールで行われるため,/etc/inittab
ファイルには,コンソール用の
getty
プロセスをセットアップするためのエントリが含まれています。
xdm
プロセスは
/sbin/rc3.d
ディレクトリ内の実行レベル・スクリプトで開始されています。
3.1.1 項に示した
inittab
ファイルの例では,システム・コンソール用に次のエントリが含まれています。
cons:1234:respawn:/usr/sbin/getty console console vt100
init
プログラムは,システム・コンソール (/dev/console
) の端末回線属性を設定する
getty
プログラムを呼び出すように指示されています。
実行レベル・フィールドには,getty
プロセスが実行レベル 1,2,3,および 4 で実行されるように指定されています。
respawn
キーワードは,実行中のプロセスが終了した場合に
getty
プロセスを再生成するように,init
に指示しています。
プロセスが実行中である場合は,init
はプロセスを再生成しません。
終了した場合にプロセスを再生成します。
注意
システム・コンソールのアクセスを別の実行レベルに制限したい場合以外は,通常
inittab
ファイル内のシステム・コンソール・エントリは変更しないでください。 この端末回線の実行レベルの範囲に制限を設けると,コンソールのgetty
プロセスの実行を禁止する実行レベルにシステムが入った場合に,システム・コンソールが使用不能になる可能性があります。
システムがサポートしている各端末でユーザがログインできるように設定するには,システムで利用可能なターミナル・タイプを調べ,サポートされている個々のターミナル・タイプに対して実行レベルと
getty
プロセスを定義しなければなりません。
次のデータベースとファイルを使用してください。
/usr/lib/terminfo
データベース
このデータベースは
/usr/share/lib/terminfo
へシンボリック・リンクされています。
このデータベースはさまざまなターミナル・タイプを定義しています。
/etc/inittab
ファイル
このファイルのエントリは,サポートされているターミナル・タイプの実行レベルと
getty
プロセスを定義します。
Tru64 UNIX オペレーティング・システムは,広範囲のターミナル・タイプをサポートしています。
terminfo
データベースには,各ターミナル・タイプとその機能が記述されています。
このデータベースは,ソース・ファイルをデータ・ファイルにコンパイルする
tic
プログラムによって作成されます。
terminfo
ソース・ファイルは通常,特定のフォーマットに準拠した最低 1 つのデバイス記述から構成されています。
ソース・ファイルの作成とコンパイルの詳細については,
terminfo
(4)
/usr/lib/terminfo
ディレクトリには,複数のソース・ファイルが含まれており,たとえば
name.ti
のようにそれぞれ
.ti
という接尾語が付いています。
tic
コマンドでソース・ファイルをコンパイルすると出力ファイルが
/usr/lib/terminfo
の下位のディレクトリに置かれます。
さまざまなコマンドとプログラムが,これらのディレクトリの中のファイルに依存しています。
TERMINFO
環境変数を
/usr/lib/terminfo
ディレクトリに設定して,データベースに情報を依存しているプログラムに対して,関連する端末情報をこのディレクトリで探すように指示してください。
端末回線の定義と端末アクセスの管理については
getty
(8)gettydefs
(4)inittab
(4)3.1.1.5 プロセス実行レベルの指定
inittab
ファイルの中の特定のエントリで,システムが特定の実行レベルに入った場合または特定の実行レベルに変わった場合に実行されるコマンド実行スクリプトを定義します。
たとえば,次の
inittab
ファイル・エントリは,各実行レベルで
init
プログラムが実行する処理を指定しています。
ss:Ss:wait:/sbin/rc0 shutdown < /dev/console > /dev/console 2>&1 s0:0:wait:/sbin/rc0 off < /dev/console > /dev/console 2>&1 s2:23:wait:/sbin/rc2 < /dev/console > /dev/console 2>&1 s3:3:wait:/sbin/rc3 < /dev/console > /dev/console 2>&1
これらのエントリは
rc
ディレクトリ構造に関連しています。
rc
ディレクトリ構造についての詳細は3.1.2 項を参照してください。
3.1.1.6 端末回線の保護
/etc/securettys
ファイルを使用して,端末回線または擬似端末回線が root ログインに使用できるかどうかを設定することができます。
端末回線で root ログインができるように設定するには,/etc/securettys
ファイルにパス名を記述します。
擬似端末で root ログインができるように設定するには,ptys
キーワードを記述します。
X 端末の場合は
:0
などの端末名を記述することによって root ログインが可能になります。
省略時の設定では,コンソールおよび X サーバ回線のみが secure に設定されています。
次の
/etc/securettys
ファイルの設定では,コンソール,X 端末,2 つの LAT 回線,およびすべての擬似端末で root ログインが可能です。
/dev/console :0 /dev/tty00 /dev/tty01 ptys
オペレーティング・システムには,初期化および実行のためのコマンド・ディレクトリ構造が用意されています。 このディレクトリ構造には,次のような 4 つの主要な構成要素があります。
init.d
ディレクトリ
rc0.d
ディレクトリ
rc2.d
ディレクトリ
rc3.d
ディレクトリ
また,各
rcn.d
ディレクトリは対応する
rcn
コマンド実行スクリプトを持っています。
3.1.2.1 init.d ディレクトリ
/sbin/init.d
ディレクトリには,システムの初期化に関連する実行可能ファイルが含まれています。
たとえば,次のようなファイルが含まれています。
.mrg..autosysconfig evm recpasswd .new..autosysconfig gateway rmtmpfiles .new..rmtmpfiles inet route .proto..autosysconfig inetd rwho .proto..rmtmpfiles insightd savecore admincheck kmod security advfsd lat sendmail asudllink lpd settime asudna mfsmount sia asunbelink motd smauth asutcp ms_srv smsd audit named snmpd autosysconfig netrain startlmf bin nfs streams binlog nfsmount syslog crashdc niffd timed cron nis uucp dhcp paging write dia_s_k preserve ws enlogin presto xlogin envmon quota xntpd
3.1.2.2 rc0.d ディレクトリと rc0 コマンド実行スクリプト
rc0
スクリプトには,システムを円滑にシャットダウンし,停止またはシングルユーザ状態にするための実行コマンドが含まれています。
すでに説明したように,システムをシングルユーザ・モードにシャットダウンしている場合 (レベル s) または停止している場合 (レベル 0) に,init
プログラムが読み取って実行するエントリが
inittab
ファイルには含まれています。
次に例を示します。
ss:Ss:wait:/sbin/rc0 shutdown < /dev/console > /dev/console 2>&1 s0:0:wait:/sbin/rc0 off < /dev/console > /dev/console 2>&1
いずれの場合も,rc0
スクリプトが指定されています。
スクリプト自体に記述されているコマンドの他に,rc0
には
/sbin/rc0.d
ディレクトリの中にあるコマンドを実行するための命令が含まれています。
これらのコマンドは,init.d
ディレクトリの中のファイルとリンクされています。
このスクリプトには,コマンドが実行される条件も定義しています。
システムが停止している場合に実行されるコマンドもあれば,システムをシャットダウンしてシングルユーザ・モードにリブートしている場合に実行されるコマンドもあります。
/sbin/rc0.d
ディレクトリの中のファイルは英字 "K" または "S" で始まり,次に 2 桁の番号とファイル名が続きます。
次に例を示します。
lrwxr-xr-x 1 root bin 17 May 8 16:35 K00enlogin -> ../init.d/enlogin lrwxrwxrwx 1 root bin 16 May 10 10:05 K02.0ms_srv -> ../init.d/ms_srv lrwxrwxrwx 1 root bin 16 May 10 10:03 K02.1asutcp -> ../init.d/asutcp lrwxrwxrwx 1 root bin 20 May 10 10:03 K02.2asunbelink -> \ ../init.d/asunbelink lrwxrwxrwx 1 root bin 16 May 10 10:03 K02.3asudna -> ../init.d/asudna lrwxrwxrwx 1 root bin 19 May 10 10:03 K02.4asudllink -> \ ../init.d/asudllink lrwxrwxrwx 1 root bin 13 May 8 16:39 K05lpd -> ../init.d/lpd lrwxrwxrwx 1 root bin 13 May 10 11:06 K07lat -> ../init.d/lat lrwxr-xr-x 1 root bin 15 May 8 16:35 K08audit -> ../init.d/audit lrwxrwxrwx 1 root bin 14 May 10 11:06 K09dhcp -> ../init.d/dhcp lrwxr-xr-x 1 root bin 15 May 8 16:37 K10inetd -> ../init.d/inetd lrwxr-xr-x 1 root bin 15 May 8 16:37 K14snmpd -> ../init.d/snmpd lrwxrwxrwx 1 root system 16 May 10 11:06 K16envmon -> ../init.d/envmon lrwxr-xr-x 1 root bin 16 May 8 16:37 K19xlogin -> ../init.d/xlogin lrwxr-xr-x 1 root bin 15 May 8 16:37 K20xntpd -> ../init.d/xntpd lrwxr-xr-x 1 root bin 15 May 8 16:37 K21timed -> ../init.d/timed lrwxr-xr-x 1 root bin 14 May 8 16:35 K22cron -> ../init.d/cron lrwxr-xr-x 1 root bin 18 May 8 16:35 K25sendmail -> \ ../init.d/sendmail lrwxrwxrwx 1 root bin 13 May 8 16:37 K30nfs -> ../init.d/nfs lrwxr-xr-x 1 root bin 16 May 8 16:35 K31presto -> ../init.d/presto lrwxrwxrwx 1 root bin 18 May 8 16:37 K35nfsmount -> \ ../init.d/nfsmount lrwxr-xr-x 1 root bin 13 May 8 16:37 K38nis -> ../init.d/nis lrwxrwxrwx 1 root bin 15 May 10 11:06 K40named -> ../init.d/named lrwxr-xr-x 1 root bin 14 May 8 16:37 K42rwho -> ../init.d/rwho lrwxr-xr-x 1 root bin 15 May 8 16:37 K43route -> ../init.d/route lrwxr-xr-x 1 root bin 17 May 8 16:37 K44gateway -> \ ../init.d/gateway lrwxr-xr-x 1 root bin 16 May 8 16:35 K45syslog -> ../init.d/syslog lrwxrwxrwx 1 root bin 14 May 10 11:07 K46uucp -> ../init.d/uucp lrwxr-xr-x 1 root bin 15 May 8 16:35 K47write -> ../init.d/write lrwxr-xr-x 1 root bin 16 May 8 16:35 K48binlog -> ../init.d/binlog lrwxr-xr-x 1 root bin 14 May 8 16:37 K50inet -> ../init.d/inet lrwxr-xr-x 1 root bin 17 May 8 16:37 K50netrain -> \ ../init.d/netrain lrwxr-xr-x 1 root bin 15 May 8 16:37 K51niffd -> ../init.d/niffd lrwxr-xr-x 1 root bin 15 May 8 16:35 K52quota -> ../init.d/quota lrwxr-xr-x 1 root bin 13 May 8 16:35 K95evm -> ../init.d/evm lrwxr-xr-x 1 root bin 14 May 8 16:35 K96acct -> ../init.d/acct
一般に,システムは英字 "S" で始まるコマンドは起動し,英字 "K" で始まるコマンドは停止します。
番号でソートされて昇順でコマンドが実行されるため,/sbin/rc0.d
ディレクトリのコマンドの番号付けは重要です。
詳細については,
rc0
(8)3.1.2.3 rc2.d ディレクトリと rc2 コマンド実行スクリプト
/sbin/rc2
スクリプトには,実行レベル 2 (ネットワーク・サービスなしのマルチユーザ・モード) にシステムを初期化するための実行コマンドが含まれています。
inittab
には,init
プログラムが読み取るエントリが含まれています。
init
プログラムは,システムのブート時や,状態を実行レベル 2 に変更する際に,inittab
ファイルのエントリを読み取って実行します。
次に例を示します。
s2:23:wait:/sbin/rc2 < /dev/console > /dev/console 2>&1
この例では
rc2
スクリプトが指定されています。
スクリプト自体に記述されているコマンドの他に,rc2
には
/sbin/rc2.d
ディレクトリの中にあるコマンドを実行するための命令が含まれています。
これらのコマンドは通常,init.d
ディレクトリの中のファイルとリンクされています。
このスクリプトには,コマンドが実行される条件も定義しています。
システムをブートしている場合に実行されるコマンドもあれば,システムの実行レベルを変更している場合に実行されるコマンドもあります。
/sbin/rc2.d
ディレクトリの中のファイルは英字 "K" または英字 "S" で始まり,次に 2 桁の番号とファイル名が続きます。
次に例を示します。
lrwxr-xr-x 1 root bin 17 May 8 16:35 K00enlogin -> ../init.d/enlogin lrwxrwxrwx 1 root bin 16 May 10 10:05 K02.0ms_srv -> ../init.d/ms_srv lrwxrwxrwx 1 root bin 16 May 10 10:03 K02.1asutcp -> ../init.d/asutcp lrwxrwxrwx 1 root bin 20 May 10 10:03 K02.2asunbelink -> \ ../init.d/asunbelink lrwxrwxrwx 1 root bin 16 May 10 10:03 K02.3asudna -> ../init.d/asudna lrwxrwxrwx 1 root bin 19 May 10 10:03 K02.4asudllink -> \ ../init.d/asudllink lrwxrwxrwx 1 root bin 13 May 8 16:39 K05lpd -> ../init.d/lpd lrwxrwxrwx 1 root bin 13 May 10 11:06 K07lat -> ../init.d/lat lrwxr-xr-x 1 root bin 15 May 8 16:35 K08audit -> ../init.d/audit lrwxrwxrwx 1 root bin 14 May 10 11:06 K09dhcp -> ../init.d/dhcp lrwxr-xr-x 1 root bin 15 May 8 16:37 K10inetd -> ../init.d/inetd lrwxr-xr-x 1 root bin 15 May 8 16:37 K14snmpd -> ../init.d/snmpd lrwxrwxrwx 1 root system 16 May 10 11:06 K16envmon -> \ ../init.d/envmon lrwxr-xr-x 1 root bin 16 May 8 16:37 K19xlogin -> ../init.d/xlogin lrwxr-xr-x 1 root bin 15 May 8 16:37 K20xntpd -> ../init.d/xntpd lrwxr-xr-x 1 root bin 15 May 8 16:37 K21timed -> ../init.d/timed lrwxr-xr-x 1 root bin 14 May 8 16:35 K22cron -> ../init.d/cron lrwxr-xr-x 1 root bin 18 May 8 16:35 K25sendmail -> \ ../init.d/sendmail lrwxrwxrwx 1 root bin 13 May 8 16:37 K30nfs -> ../init.d/nfs lrwxr-xr-x 1 root bin 16 May 8 16:35 K31presto -> ../init.d/presto lrwxrwxrwx 1 root bin 18 May 8 16:37 K35nfsmount -> \ ../init.d/nfsmount lrwxr-xr-x 1 root bin 13 May 8 16:37 K38nis -> ../init.d/nis lrwxrwxrwx 1 root bin 15 May 10 11:06 K40named -> ../init.d/named lrwxr-xr-x 1 root bin 14 May 8 16:37 K42rwho -> ../init.d/rwho lrwxr-xr-x 1 root bin 15 May 8 16:37 K43route -> ../init.d/route lrwxr-xr-x 1 root bin 17 May 8 16:37 K44gateway -> \ ../init.d/gateway lrwxr-xr-x 1 root bin 16 May 8 16:35 K45syslog -> ../init.d/syslog
通常,システムは英字 "S" で始まるコマンドは起動し,"K" で始まるコマンドは停止します。
"K" で始まるコマンドは,システムが実行レベルを高いレベルから低いレベルへ変更している場合にのみ実行されます。
"S" で始まるコマンドはどんな場合にも実行されます。
番号でソートされて昇順でコマンドが実行されるため,/sbin/rc2.d
ディレクトリのコマンドの番号付けは重要です。
詳細については,
rc2
(8)3.1.2.4 rc3.d ディレクトリと rc3 コマンド実行スクリプト
/sbin/rc3
スクリプトには,ネットワークサービス付きのマルチユーザ状態 (実行レベル 3) にシステムを初期化するための実行コマンドが含まれています。
すでに説明したように,システムをブートしている場合,または状態を実行レベル 3 に変更している場合に
init
プログラムが読み取って実行するエントリが
inittab
ファイルには含まれています。
次に例を示します。
s3:3:wait:/sbin/rc3 < /dev/console > /dev/console 2>&1
この例では
rc3
スクリプトが指定されています。
スクリプト自体に記述されているコマンドの他に,rc3
には
/sbin/rc3.d
ディレクトリの中にあるコマンドを実行するための命令が含まれています。
これらのコマンドは通常,init.d
ディレクトリの中のファイルとリンクされています。
このスクリプトには,コマンドが実行される条件も定義しています。
システムをブートしている場合に実行されるコマンドもあれば,システムの実行レベルを変更している場合に実行されるコマンドもあります。
/sbin/rc3.d
ディレクトリの中のファイルは英字 "S" で始まり,その後に 2 桁の番号とファイル名が続きます。
次に例を示します。
lrwxr-xr-x 1 root bin 15 May 8 16:37 S00cniffd -> ../init.d/niffd lrwxr-xr-x 1 root bin 17 May 8 16:37 S00fnetrain -> ../init.d/netrain lrwxr-xr-x 1 root bin 14 May 8 16:37 S00inet -> ../init.d/inet lrwxr-xr-x 1 root bin 15 May 8 16:35 S01quota -> ../init.d/quota lrwxrwxrwx 1 root bin 14 May 10 11:07 S04uucp -> ../init.d/uucp lrwxr-xr-x 1 root bin 18 May 8 16:35 S08startlmf -> ../init.d/startlmf lrwxr-xr-x 1 root bin 16 May 8 16:35 S09syslog -> ../init.d/syslog lrwxr-xr-x 1 root bin 16 May 8 16:35 S10binlog -> ../init.d/binlog lrwxr-xr-x 1 root bin 17 May 8 16:37 S11gateway -> ../init.d/gateway lrwxr-xr-x 1 root bin 15 May 8 16:37 S12route -> ../init.d/route lrwxr-xr-x 1 root bin 14 May 8 16:37 S13rwho -> ../init.d/rwho lrwxr-xr-x 1 root bin 17 May 8 16:35 S14settime -> ../init.d/settime lrwxrwxrwx 1 root bin 15 May 10 11:06 S15named -> ../init.d/named lrwxr-xr-x 1 root bin 13 May 8 16:37 S18nis -> ../init.d/nis lrwxrwxrwx 1 root bin 13 May 8 16:37 S19nfs -> ../init.d/nfs lrwxrwxrwx 1 root bin 18 May 8 16:37 S20nfsmount -> ../init.d/nfsmount lrwxr-xr-x 1 root bin 15 May 8 16:35 S21audit -> ../init.d/audit lrwxr-xr-x 1 root bin 18 May 8 16:35 S25preserve -> ../init.d/preserve lrwxr-xr-x 1 root bin 20 May 8 16:35 S30rmtmpfiles -> ../init.d/rmtmpfiles lrwxr-xr-x 1 root bin 16 May 8 16:35 S36presto -> ../init.d/presto lrwxr-xr-x 1 root bin 18 May 8 16:35 S40sendmail -> ../init.d/sendmail lrwxr-xr-x 1 root bin 15 May 8 16:37 S45xntpd -> ../init.d/xntpd lrwxr-xr-x 1 root bin 15 May 8 16:37 S46timed -> ../init.d/timed lrwxr-xr-x 1 root bin 15 May 8 16:37 S49snmpd -> ../init.d/snmpd lrwxrwxrwx 1 root bin 18 May 8 16:44 S50insightd -> ../init.d/insightd lrwxrwxrwx 1 root system 16 May 10 11:06 S51envmon -> ../init.d/envmon lrwxrwxrwx 1 root bin 16 May 8 16:41 S53advfsd -> ../init.d/advfsd lrwxr-xr-x 1 root bin 15 May 8 16:37 S55inetd -> ../init.d/inetd lrwxrwxrwx 1 root bin 14 May 10 11:06 S56dhcp -> ../init.d/dhcp lrwxr-xr-x 1 root bin 14 May 8 16:35 S57cron -> ../init.d/cron lrwxrwxrwx 1 root bin 13 May 10 11:06 S58lat -> ../init.d/lat lrwxr-xr-x 1 root bin 14 May 8 16:35 S60motd -> ../init.d/motd lrwxrwxrwx 1 root bin 19 May 10 10:03 S61.0asudllink -> \ ../init.d/asudllink lrwxrwxrwx 1 root bin 16 May 10 10:03 S61.1asudna -> ../init.d/asudna lrwxrwxrwx 1 root bin 20 May 10 10:03 S61.2asunbelink -> \ ../init.d/asunbelink lrwxrwxrwx 1 root bin 16 May 10 10:03 S61.3asutcp -> ../init.d/asutcp lrwxrwxrwx 1 root bin 16 May 10 10:05 S61.4ms_srv -> ../init.d/ms_srv lrwxr-xr-x 1 root bin 15 May 8 16:35 S63write -> ../init.d/write lrwxrwxrwx 1 root bin 13 May 8 16:39 S65lpd -> ../init.d/lpd lrwxr-xr-x 1 root bin 17 May 8 16:35 S80crashdc -> ../init.d/crashdc lrwxr-xr-x 1 root bin 12 May 8 16:45 S90ws -> ../init.d/ws lrwxr-xr-x 1 root bin 16 May 8 16:37 S95xlogin -> ../init.d/xlogin lrwxr-xr-x 1 root bin 13 May 8 16:35 S97evm -> ../init.d/evm lrwxr-xr-x 1 root bin 16 May 8 16:35 S98smauth -> ../init.d/smauth lrwxr-xr-x 1 root bin 20 May 8 16:35 S99admincheck -> \ ../init.d/admincheck lrwxr-xr-x 1 root bin 14 May 8 16:38 S99smsd -> ../init.d/smsd
通常,システムは英字 "S" で始まるコマンドを起動し,"K" で始まるコマンドを停止します。 英字 "K" で始まるコマンドは,システムが実行レベルを高いレベルから低いレベルへ変更している場合にのみ実行されます。 "S" で始まるコマンドはどんな場合にも実行されています。
通常,英字 "S" で始まるコマンドのみを
rc3.d
ディレクトリに置きます。
省略時の設定では実行レベル 3 が最も高い実行レベルであるため,それより高い実行レベルから実行レベル 3 へ変更することはできません。
したがって,"K" で始まるコマンドは実行できません。
番号でソートされて昇順でコマンドが実行されるため,/sbin/rc3.d
ディレクトリのコマンドの番号付けは重要です。
詳細については,
rc3
(8)3.1.3 crontabs ディレクトリ
crontab
コマンドは,コマンドのスケジュールを
cron
システム・クロック・デーモンに発行します。
cron
デーモンは,/var/spool/cron/crontabs
ディレクトリの中のファイルに指定された日付と時刻に従ってシェル・コマンドを実行します。
定期的に実行するコマンドは,このファイルの中にあります。
1 度だけ実行するコマンドは,/var/spool/cron/atjobs/*
ファイルの中にあり,at
コマンドで発行されます。
/var/spool/cron/crontabs
ディレクトリの中の次に示すファイル・エントリの例は,月曜日から土曜日までの午前 2 時に
runacct
コマンドが実行され,出力が
/var/adm/acct/nite/fd2log
ファイルに送られることを指定しています。
0 2 * * 1-6 /usr/sbin/acct/runacct > /var/adm/acct/nite/fd2log& [1] [2] [3]
各エントリの構文は次のとおりです。
分,時,日,月,および曜日を指定します。 曜日については,値 0 (ゼロ) は日曜日を示し,値 1 は月曜日を示します。 それぞれの値は,1 つの値,コンマで区切って 2 つ以上の値,またはダッシュ (-) で値の範囲を指定することができます。 また,アスタリスク (*) で,すべての値を示すこともできます。 たとえば,時にアスタリスク (*) を指定すると,コマンドは 1 時間ごとに実行されます。 [例に戻る]
指定された時刻に実行するコマンドを指定します。 [例に戻る]
コマンドの引数を任意に指定します。 [例に戻る]
/var/spool/cron/crontabs
ディレクトリの中のファイルにはシステム・ユーザにちなんだ名称が付けられ,ファイルの中のコマンドはそのユーザの権限のもとで実行されます。
たとえば,adm
ファイルのコマンドは
adm
の権限のもとで実行されます。
crontab
コマンドを使用するためには,実行するファイル名と一致するユーザでなければなりません。
たとえば,ユーザ
adm
が
crontab
コマンドを実行した場合,そのコマンドは
/var/spool/cron/crontabs/adm
ファイルに対して実行されます。
たとえば,adm
権限のもとで実行されるものとしてコマンドを
cron
デーモンに発行するには,次のようにします。
adm
でログインします。
次のように
-l
オプション付きで
crontab
コマンドを入力して,/usr/spool/cron/crontabs/adm
ファイルをホーム・ディレクトリの中の一時ファイルにコピーします。
% crontab -l > temp_adm
一時ファイルを編集して,指定した時刻に実行したいコマンドを追加します。
crontab
コマンドを入力して,cron
デーモンにコマンドを発行するための一時ファイルを指定します。
たとえば,次のように入力します。
% crontab temp_adm
/var/adm/cron/log
ファイルには,cron
デーモンによって実行されたコマンドのヒストリが入っています。
/usr/spool/cron/crontabs/root
ファイルを使用して,システム・ログ・ファイルのバックアップおよびクリーンアップができます。
root
crontab ファイル
/usr/var/spool/cron/crontabs/root
には,/var/adm/wtmp
ログ・ファイルを毎週日曜日の午前 2 時にクリーンアップするモデル・エントリがあります。
ログ・ファイルを圧縮したバックアップが 1 つ,次のクリーンアップまで保持されます。
crontab
エントリは,次のように,省略時の設定で有効になっています。
# To get the standard output by e-mail remove the output redirection. # 0 2 * * 0 /usr/lbin/logclean /var/adm/wtmp > /dev/null
ローカル・システムの要件に合うように,タスクを追加したり,既存のタスクを変更してください。
上記の例では,出力が省略時の設定で
/dev/null
にリダイレクトされます。
これを e-mail アドレスにリダイレクトして,タスクが終了したときに通知を受け取るようにすることもできます。
この
cron
タスクは,ログイン・ログ・ファイルをバックアップし,新しい空のファイルを作成します (ログイン・ログには,システム上のすべてのユーザのログインが記録されます)。
ログ・ファイルをもっと長い期間保存した場合は,クリーンアップの頻度を変えるか,./crontabs/root
の該当エントリをコメントアウトします。
また,プリント・サービス関連のファイルなど,別のシステム・ログ・ファイルをクリーンアップする
cron
タスクを作成したい場合があるかもしれません。
root crontab
ファイルを編集する場合は,root (スーパユーザ) になり,必ず次のコマンドを使用してください。
# crontab -e
/usr/bin/ed
以外のエディタを使いたい場合は,あらかじめ環境変数
EDITOR
を設定し,エクスポートしておく必要があります。
詳細については,
crontab
(1)3.2 各国語サポート
オペレーティング・システムは,プログラムの言語固有および国固有の情報を提供し,またサポートを行います。
システム管理者に直接関係のあるソフトウェアの構成要素は,/usr/lib/nls
にあるディレクトリとファイルです。
国際化されたシステムは,さまざまな方法で情報を提示します。 ロケールとは,世界の特定の地域に対応する言語,テリトリ,およびコードセットの要件を指します。 システムは,ロケール固有のデータを 2 種類のファイルに分けて保存します。
これらのファイルには,月と日の名前,日付形式,通貨および数値の形式,有効な yes/no 文字列,文字分類データ,および照合順序に関する情報が含まれています。
これらのファイルは,/usr/lib/nls/loc
ディレクトリにあります。
これらのファイルには,プログラムが使用するメッセージ文字列が含まれています。
これらのファイルは,/usr/lib/nls/msg/locale-name
ディレクトリにあります。
表 3-1
は,シングル・バイトのヨーロッパ言語ロケールのサブセットをインストールしたときに
/usr/lib/nls/loc
に移動するロケールの例です。
各国際化サブセットをインストールする場合にはそれぞれのライセンスを取得する必要があります。
表 3-1: ロケール・サポート・ファイル
言語/テリトリ | ロケール・ファイル名 |
Danish-Denmark | da_DK.ISO8859-1 |
Dutch-Netherlands | nl_NL.ISO8859-1 |
Dutch_Belgium | nl_BE.ISO8859-1 |
English_U.K | en_GB.ISO8859-1 |
English_U.S.A. | en_US.ISO8859-1 |
Finnish-Finland | fi_FI.ISO8859-1 |
French_Belgium | fr_BE.ISO8859-1 |
French_Canada | fr_CA.ISO8859-1 |
French_France | fr_FR.ISO8859-1 |
注意
/usr/lib/nls/loc
ディレクトリには表 3-1 にリストされているファイルと対応する環境テーブル (.en ファイル) と文字テーブル (.8859* ファイル) が含まれることがありますが,これらのテーブルは古いプログラムに対するシステムの互換性を保つためのものなので,新しいアプリケーションで使用しないでください。
国際化オプションと国際的なソフトウェアの開発をサポートする機能については,次のリファレンス・ページを参照してください。
code_page
(5)Microsoft Windows と Windows NT システムで使用する文字コードセット
iconv_intro
(5)コードセット変換の概要
iconv
(1)コード化された文字を別の文字セットに変換するコマンドの説明
i18n_intro
(5)国際化 (I18N) の概要
i18n_printing
(5)プリンタ・サポートの国際化 (I18N) の概要
l10n_intro
(5)ローカライズ (L10N) の概要
locale
(1)ロケールについての情報
国際化に関するリファレンス・ページは,ここにリストしたものだけではありません。
各リファレンス・ページの関連情報セクションまたは 『国際化ソフトウェア・プログラミング・ガイド』を参照してください。
日本語ロケールについては『日本語機能ガイドブック』を参照してください。
3.2.1 ロケールの設定
国際化のための省略時のシステム全体でのロケールは,C ロケールです。
省略時のシステム全体でのロケールは,ユーザが LC_TIME,LC_COLLATE などの各国別環境変数の設定省略時に
setlocale
機能が使用するロケールです。
システム全体で Bourne シェルおよび Korn シェルのユーザの省略時のロケールを変更するには,/etc/profile
ファイルを編集し,設定するロケールの名前を書き込みます。
setlocale
機能は,このファイルで指定したロケールを使用します。
C シェルのユーザの省略時のロケールを変更する場合は
/etc/csh.login
ファイルを編集し,設定するロケールの名前を書き込みます。
ネイティブ・ロケールは,/usr/lib/nls/loc
ディレクトリ内のどのロケールにも設定することができます。
ロケールを設定するには,初期化ファイル内の 1 つまたは複数の環境変数にロケール名を割り当ててください。 最も簡単な方法は,LANG 環境変数に値を割り当てることです。 この環境変数はロケールのすべての構成要素に影響を与えます。
注意
C ロケールがシステムの省略時の設定です。 C ロケールは,アメリカ英語を指定し,7 ビットの ASCII コード・セットを使用します。 C ロケールとアメリカ英語ロケール (
en_US.ISO8859-1
) との主な違いは後者がエラー・メッセージを強化していることです。
次の例では,C シェルとそのシェルのすべての子プロセスのロケールをフランス語に設定します。
% setenv LANG fr_FR.ISO8859-1
別のシェルに異なるロケールを割り当てたい場合は,そのシェルの LANG 環境変数を再設定することができます。 次の例では,Korn シェルおよび Bourn シェルのロケールがフランス語に設定されます。
$ LANG=fr_FR.ISO8859-1 $ export LANG
コマンド行で LANG 環境変数を設定すると,現在のプロセスに対してのみロケールが設定されます。
システム管理者および他のユーザがログインする際に必ずロケールを設定するよう設定するためには,省略時のシェルのログイン・スクリプトを編集してください。
C シェルの場合は,.login
ファイルの LANG 環境変数を設定してください。
Bourne シェルまたは Korn シェルの場合は,.profile
ファイルの LANG 環境変数を設定してください。
ほとんどの場合,LANG 環境変数に値を割り当てることによってロケールを設定することができます。 これは,LANG 環境変数でロケールを設定すると,次の機能に対する省略時の値が自動的に設定されるためです。
照合
文字分類
日付と時刻の表記形式
数値および通貨の表記形式
プログラム・メッセージ
Yes/No プロンプト
ただし,ごくまれに,ロケール内の上記のいずれかのカテゴリの省略時の設定を変更する必要があります。
この場合は,これらのカテゴリを指定する変数を再設定します。
詳細については,次の項を参照してください。
3.2.2 ロケール・カテゴリの変更
LANG 環境変数でロケールを設定すると,ロケールに適した照合順序,文字分類機能,日付と時刻の表記形式,数値および通貨の表記形式,プログラム・メッセージ,および Yes/No プロンプトについて自動的に省略時の値が設定されます。 ただし,省略時の値のいずれかを変更する必要がある場合には,これらのカテゴリに関連する環境変数を再設定します。
表 3-2
に,ロケール・カテゴリに影響する環境変数を示します。
表 3-2: ロケール環境変数
環境変数 | 説明 |
LC_ALL | LANG を含む他のすべての国際化環境変数の設定を変更する。 |
LC_COLLATE | 名前をソートする際,およびパターンに文字範囲が存在する場合に使用する照合順序を指定する。 |
LC_CTYPE | 使用する文字分類情報を指定する。 |
LC_NUMERIC | 数値のフォーマットを指定する。 |
LC_MONETARY | 通貨フォーマットを指定する。 |
LC_TIME | 日付と時刻の形式を指定する。 |
LC_MESSAGES | システム・メッセージの表示に使用する言語を指定する。 また yes/no プロンプトで "yes" と "no" を示すための文字列を指定する。 |
LANG 環境変数の場合と同様に,これらすべてのカテゴリ変数にはロケール名を割り当てることができます。 たとえば,ある会社で一般的に使用する言語がスペイン語であるとします。 LANG 環境変数でロケールをスペイン語に設定し,数値と通貨のフォーマットをアメリカ英語に設定することができます。 この場合,次のような変数の割り当てを実行します。
% setenv LANG es_ES.ISO8859-1 % setenv LC_NUMERIC en_US.ISO8859-1 % setenv LC_MONETARY en_US.ISO8859-1
ロケール名に
@modifier
を含めて,別カテゴリの特別な要求に対応する特定のバージョンを示すことができます。
たとえば,辞書の順番と電話帳の順番という 2 つの方法でデータをソートすることができます。 フランスにあるサイトで,省略時のフランス語ロケールを使用し,このロケールでは標準的なセットアップとして辞書の順番を使用するとします。 しかし,この例では,電話帳の順序でデータを照合する,サイト定義のロケールもサイトで使用する必要があるとします。 この場合は,次のように環境変数を設定することができます。
% setenv LANG fr_FR.ISO8859-1 % setenv LC_COLLATE fr_FR.ISO8859-1@phone
LC_COLLATE を明示的に設定することによって,LANG 変数の暗黙の設定が指定変更されます。
3.2.3 ロケール変数の制限事項
LANG および LC_* 環境変数によって,希望どおりにロケールを設定することができますが,誤りを防ぐことはできません。 たとえば,LANG をスウェーデンのロケールに設定し,LC_CTYPE をポルトガルのロケールに設定してしまう可能性もあります。
同様に,ロケール情報とデータを結び付けることもできません。
つまり,システムには,ユーザがあるファイルを作成した場合に設定したロケールを知る方法がなく,ユーザが後でそのデータを不適当な方法で処理することをシステムが防ぐことはできないということです。
たとえば,foo
ファイルを作成した場合に LANG がドイツ語のロケールに設定されていたとします。
ここで,LANG をスペイン語のロケールに再設定し,foo
に対して
grep
を実行したとします。
この場合
grep
コマンドは,ファイル内のドイツ語のデータに対してスペイン語の規則を使用します。
3.2.4 メッセージ・カタログとロケールについての環境変数の設定
メッセージ・カタログの位置を定義するには,NLSPATH 環境変数を設定してください。 省略時のパスは次のとおりです。
NLSPATH=/usr/lib/nls/msg/%L/%N:
%L
は現在のロケール名を指定し,%N
はメッセージ・カタログの名前の値を示します。
また,LOCPATH 環境変数はロケールの探索パスを定義します。 省略時のパスは次のとおりです。
LOCPATH=/usr/lib/nls/loc:
オペレーティング・システムには,多くの国際化機能があります。 ユーザまたはローカル・サイトの責任者が,オペレーティング・システムのどの国際化機能 (ワールドワイド・サポート機能とも呼ばれる) の構成要素が必要かを決定します。 ワールドワイド・サポートはオプションのサブセットであり,インストール時に選択することができます。 システム管理者の仕事は,次のようなユーザのために,これらの機能を設定して保守することです。
多国語対応アプリケーションを作成するソフトウェア開発者
システムで多国語対応アプリケーションを実行するユーザ
ワールドワイド・サポートに関して 3 つの情報源が用意されています。
国際化をサポートするオプションのソフトウェア・サブセットの一覧については,『インストレーション・ガイド』を参照してください。
多国語対応ソフトウェアを作成するプログラマのために,オペレーティング・システム環境を設定して,保守する方法については,『国際化ソフトウェア・プログラミング・ガイド』を参照してください。
多国語対応アプリケーションのユーザのために,システムを設定して保守する方法については,システム設定グラフィカル・ユーザ・インタフェースを使用し,「システム設定」アイコンをクリックしてから「I18N」アイコンをクリックしてください。 「I18N」ウィンドウからタスクを選択して,システム上のワールドワイド・サポート機能を構成したり変更することができます。 ただしこのオプションを有効にする場合,少なくとも 1 つのワールドワイド言語サポート・ソフトウェア・サブセットをインストールしている必要があります。 また,このオプションを CDE アプリケーション・マネージャから起動することもできます。 CDE の使用については,第 1 章を参照してください。
時間帯情報は,/etc/zoneinfo
ディレクトリ内のファイルに格納されています。
/etc/zoneinfo/localtime
ファイルは,/etc/zoneinfo
ディレクトリ中のファイルとリンクされており,ローカル時間帯を指定します。
これらのファイルは,システムのインストレーション時にリンクされますが,スーパユーザは,/etc/zoneinfo/localtime
ファイルを再リンクしてローカル時間帯を変更することができます。
たとえば,次のコマンドは,ローカル時間帯をアメリカ大陸のニューヨークと一致するように変更します。
# ln -sf /etc/zoneinfo/America/New_York /etc/zoneinfo/localtime
/etc/zoneinfo/sources
ディレクトリには,全世界の時間帯情報および夏時間情報を指定するソース・ファイルが含まれています。
これらの情報を使用して
/etc/zoneinfo
ディレクトリにファイルが生成されます。
ソース・ファイルの情報を変更し,zic
コマンドを使用して
/etc/zoneinfo
ディレクトリに新しいファイルを生成することができます。
時間帯データベース・ファイルの形式の詳細は,
zic
(8)
.login
ファイルまたはシェル環境ファイルで TZ 環境変数を設定すると,省略時の時間帯情報を変更することができます。
TZ 環境変数を定義すると,/etc/zoneinfo/localtime
に指定された時間帯情報の省略時の設定がその値によって無効にされます。
省略時の設定では,TZ 変数は未定義です。
TZ 環境変数の構文は,次のとおりです。
stdoffset
[dst
[offset
] [,start
[/time
], end[/time
]]]
次の構文でも指定できます。
stdoffset [ dst [ offset ] ]
TZ 環境変数の構文で使用するパラメータは次のとおりです。
std
および
dst
標準時間帯 (std
) または夏時間帯 (dst
) を示す 3 文字以上の文字列を指定します。
注意
夏時間はロケールにより daylight savings time または summer time と呼ばれます。
dst
変数を指定しない場合,夏時間は適用されません。
任意の大文字および小文字が使用できます。
先頭に,コロン (:),コンマ (,),ハイフン (-),正符号 (+),および ASCII NUL を付けることはできません。
offset
GMT とローカル時間の差を指定します。
offset
変数は 24 時間表示法を使用して,次の構文で指定します。
hh [ :mm [ :ss ]]
dst
変数の後に
offset
変数を指定しない場合,夏時間には,標準時間よりも 1 時間早い時刻が使用されます。
offset
変数の前に負符号 (-) を指定すると,その時間帯は子午線の東側にあることを意味します。
省略時の設定は子午線の西側であり,正符号 (+) を付けて指定することもできます。
start
および
end
夏時間の開始および終了時期を指定します。
start
および
end
変数は次の構文で指定します。
Jj
nMm.w.d
最初の構文では,j
変数はユリウス暦の 1 〜 365 の日です。
うるう年のうるう日 (2 月 29 日) はカウントしません。
2 番目の構文では,n
変数はゼロ (0) を基数とするユリウス暦の 0 〜 365 の日です。
うるう日はカウントされます。
3 番目の構文では,m
変数は月 (1〜12),w
変数は週の番号 (1〜5),d
変数は曜日 (0〜6) を指定します。
d
変数では,ゼロ (0) が日曜日を,6 が土曜日を意味します。
time
夏時間への移行または夏時間からの復帰時間をローカル時間で指定します。
time
変数は 24 時間表示法を使用して次の構文で指定します。
hh [:mm
[:ss
] ]
省略時の設定は 02:00:00 です。
下記の TZ 環境変数の指定例では,次のことが指定されています。
EST (東部標準時) は GMT から 5 時間遅れの標準時を指定します。
EDT (東部夏時間) は GMT から 4 時間遅れの夏時間を指定します。
EDT は 4 月の第 1 日曜日に始まり,10 月の最終日曜日に終了します。 夏時間への移行および夏時間からの復帰は,午前 2 時 (省略時の設定) に行われます。
EST5EDT4,M4.1.0,M10.5.0
次の構文を指定できます。
:pathname
pathname
変数は,tzfile
ファイル・フォーマットで,時間の変換情報を含むファイルのパス名を指定します。
たとえば次のように指定します。
:America/New_York
ファイル・フォーマットについての詳細は,
tzfile
(4)
パス名がスラッシュ (/) で始まっている場合は,絶対パス名を指定しています。
それ以外の場合は,/etc/zoneinfo
ディレクトリからの相対パスです。
指定したファイルが使用できない場合または壊れている場合,システムはグリニッジ標準時 (GMT) を省略時の値として使用します。
タイム・ゾーン・フォーマットは,SVID2 と SVID3 で異なります。
SVID2 の場合,/usr/sbin/timezone
が
/etc/svid2_tz
ファイルを作成します。
TZ および TZC 変数の内容は,ユーザが
/usr/sbin/timezone
を実行して提供した情報をベースにしています。
SVID3 の場合,インストレーション時に
/etc/svid3_tz
ファイルが作成されます。
TZ 変数と TZC 変数の内容は,/usr/sbin/timezone
実行時にユーザが指定した時間帯に関する情報をベースにしています。
詳細については,
timezone
(3)3.5 電力管理のカスタマイズ
オペレーティング・システムには電力を節約する機能が備わっており,適切なハードウェアを装備したシステムであれば,この機能を使って節電することができます。 お手持ちのシステムが電力管理をサポートしているかどうかは,システムのオーナーズ・マニュアルを参照してください。 電力管理ユーティリティを使用すれば,次のことができます。
サポート対象モニタ (Energy Star) 上で省エネ機能を有効にし,電力モードと休止時間を制御する。
選択した休止時間が経過したときにどのディスクをスピンダウンするか,を選択する。 システムによっては,ある種の省エネ機能が省略時で使用可能になって出荷されます。 ディスクが予期せずにスピンダウンしたり,データの転送に時間がかかったりする場合は,この機能が有効になっているかどうかを確認してください。
CPU の電力使用方法を設定する。 この機能は,CPU がスロー・ダウン節電モードをサポートしているシステムでだけ使用できます。
システム管理ユーティリティまたはコマンド行インタフェースを通して,1 つのワークステーションごと,またはシステムのグループごとに,これらの機能は表示させ,設定する。 オペレーティング・システムは,ネットワーク全体にわたってハードウェアを管理しモニタするユーティリティを用意しています。
イベント管理 (EVM) インタフェースを使って,電力管理イベントをモニタする。
節電機能は,次のユーティリティを使い,いくつかの方法で起動し管理することができます。
個々のワークステーションを,X11 に準拠したグラフィカル・ユーザ・インタフェース
/usr/bin/X11/dxpower
を使って管理します。
これらのインタフェースを起動する方法の詳細は,オンライン・ヘルプと
dxpower
(8)
sysconfig
と
sysconfigdb
を使って,カーネル属性をロードし設定します。
コマンド・オプションのリストは,
sysconfig
(8)sysconfigdb
(8)
3.5.1 dxpower ユーティリティのグラフィカル・ユーザ・インタフェースの使用
グラフィカル・ユーザ・インタフェース
dxpower
は,ホスト・システムのグラフィク・コンソールで使用するか,またはコマンド行から呼び出すことができます。
機能によっては,パスワードで保護されているものがあります。
そのような機能は,root でログインするシステム管理者だけが使えます。
特権のないユーザは,モニタの省エネ機能など,限られた機能だけを使用することができます。
CDE を使っている場合は,次の手順に従って
dxpower
電力管理ユーティリティをオープンすることができます。
「アプリケーション・マネージャ」アイコンをクリックします。
「システム管理」アプリケーション・グループ・アイコンをダブルクリックします。
「日常管理」アプリケーション・グループ・アイコンをダブルクリックします。
「パワー・マネジメント」アイコンをダブルクリックします。
端末または他の X11 ウィンドウ環境を使用している場合は,コマンド行からdxpower
ユーティリティを起動することができます。
次のように入力してください。
# /usr/bin/X11/dxpower
dxpower
ユーティリティを起動すると,電力管理ウィンドウが画面に表示されます。
このウィンドウには,動作モードを選択するためのチェックボックスと休止時間の限度を設定するためのスライデング・スケール (バー) があります。
休止時間は,装置が節電モードになるまでの時間であり,1 〜 60 分の間で設定します。
ログイン特権で許可されれば,グラフィカル・インタフェースで次のことができます。
ホスト・システムにあるすべてのサポート対象装置について,電力管理を有効または無効する。
電力管理を有効にする時間帯を指定する。 たとえば,システムを夜の間だけ節電モードにするよう設定することができます。
グラフィク・モニタの省エネ機能を有効にし,stanby,suspend,および電源オフ・モードへ移るまでの最小休止時間を指定する。 たとえば,システムがあまり使用されない場合,2,3 分の休止時間の後にシステムを電源オフ・モードにするよう設定することができます。
個々のディスクごとに節電モードの有効無効を切り替える。 たとえば,ブート・ディスクは常にフル電源モードにし,使用していないユーザ・ファイル・システムは,節電のため,指定した休止時間後にスピンダウンさせます。
注意
DPMS (Display Power Management Signaling) をサポートしていないモニタ (ディスプレイ) は,DPMS 機能を起動すると,故障する恐れがあります。 オーナーズ・マニュアルに記載されているモニタの仕様を確認してください。 DPMS をサポートしているモニタの場合,節電モードに置かれてから通常のモードに戻る時間はさまざまです。 電源オフ状態に置かれる時間が長いほど,マウスやキーボードを動かすことによって画面が再表示されるまでの時間は長くなります。 これは,電力管理ソフトウェアの機能ではなく,モニタの蛍光体が冷えていて,暖め直すのに時間がかかるためです。
dxpower
ユーティリティの使用法についての詳細を知りたい場合は,アプリケーションを開始し,ウィンドウの右下にある [ヘルプ] ボタンを選択してください。
3.5.2 sysconfig コマンドの使用
sysconfigdb
データベースを管理する
sysconfig
コマンドを使用すると,コマンド行から電力管理属性を制御することができます。
たとえば,リモート端末やローカル・コンソール端末からシステムの電力管理機能を起動する場合は,sysconfig
コマンドを使用する必要があります。
CDE を実行していないコンソール端末から電力管理ツールを起動する場合には,graphics_powerdown
および
graphics_off_dwell
属性のみが適用されます。
graphics_standby_dwell
および
graphics_suspend_dwell
属性を変更しても,何の影響もありません。
これらの属性については,3.5.2.1 項を参照してください。
注意
sysconfig
コマンドとdxpower
コマンドは同時に使用しないでください。 同時に使用すると,予測できない動作をすることがあります。
カーネルの再起動時に有効になる電力管理値を変更するには,stanza を作成します。
詳細については,
stanza
(4)
default_pwrmgr_state
グローバルな電力管理状態。 この属性を有効にするには 1 を指定し,無効にするには 0 を指定します。
cpu_slowdown
CPU スローダウンの現在の状態。 この属性を有効にするには 1 を指定し,無効にするには 0 を指定します。
disk_dwell_time
登録されているディスクの省略時の休止時間を分単位で指定します。
disk_spindown
ディスク・スピンダウンの現在の状態。 この属性を有効にするには 1 を指定し,無効にするには 0 を指定します。
graphics_powerdown
グラフィックスの電源切断の現在の状態。 この属性を有効にするには 1 を指定し,無効にするには 0 を指定します。
graphics_standby_dwell
standby
DPMS (Display Power Management Signaling) モードの省略時の休止時間を分単位で指定します。
この属性を無効にする場合は値 0 を指定します。
モニタ電力管理とスクリーン・セーバを同時に有効にしている場合は,DPMS 対応モニタは,アクティブ電源オフ・モードになります。 また,Energy-Star 準拠のプラットフォームでは,ディスクのスピン・ダウン機能もアクティブになることがあります。 これらの省エネ機能がアクティブになっているときでも,スクリーン・セーバの実行を継続できるように,X サーバは省エネ機能を無効にすることがあります。 電力消費を最小にするには,以下のいずれかの手段で,アクティブなスクリーン・セーバの使用を中止します。
「スタイル・マネージャ」の下の「画面」ダイアログボックスの「スクリーンセーバ」パネルで,「画面のブランク」を選択し,実行中のアクティブなスクリーン・セーバを選択解除します。
このダイアログボックスで,「オフ
」を選択します。
端末クライアント・ウィンドウから,xset s off
コマンドを実行します。
graphics_suspend_dwell
suspend
DPMS モードの省略時の休止時間を分単位で指定します。
この属性を無効にする場合には 0 を指定し,それ以外の場合には
graphics_standby_dwell
値以上の値を指定します。
graphics_off_dwell
off
DPMS モードの省略時の休止時間を分単位で指定します。
この属性を無効にする場合は 0 を指定し,それ以外の場合は
graphics_standby_dwell
および
graphics_suspend_dwell
値以上の値を指定します。
たとえば,power_mgr.stanza
という名前の
stanza
ファイルを作成し,属性に対して次のような値を定義することができます。
pwrmgr: default_pwrmgr_state=1 cpu_slowdown=1 disk_dwell_time=20 disk_spindown=1 graphics_powerdown=1 graphics_standby_dwell=5 graphics_suspend_dwell=10 graphics_off_dwell=15
disk_dwell_time
,graphics_standby_dwell
,
graphics_suspend_dwell
,graphics_off_dwell
の各属性に対して指定された値は,アイドル状態にあるハードウェアの電源を切断するまでの時間 (分単位) を示しています。
この場合,電力管理サブシステムは 20 分待機した後にディスクをスピンダウンし,5,10,15 分待機した後,それぞれ DPMS の
standby
,suspend
,off
モードにします。
残りの属性については,値 1 が指定されていれば,その機能が有効に設定されていることを示しています。
stanza
ファイルを作成して保存したのち,次のコマンドを入力して
/etc/sysconfigtab
データベースを更新します。
# sysconfigdb -a -f power_mgr.stanza pwrmgr
stanza
ファイル使用の詳細については,
sysconfigdb
(8)3.5.2.2 実行中のカーネルまたは X サーバの変更
実行中のカーネルで属性の値を変更するには,sysconfig -r
コマンドを使用します。
たとえば,次のように入力します。
# sysconfig -r pwrmgr cpu_slowdown=0
次の例に示すように,一度に 2 つ以上の属性を変更することができます。
# sysconfig -r pwrmgr \ graphics_powerdown=1 graphics_standby_dwell=10
システム属性変更の詳細については,
sysconfig
(8)
DPMS モードおよび X サーバに関する値の変更についての詳細は,Xdec
(1X) および
xset
(1X) で説明している
dpms
スイッチを参照してください。
3.5.3 SysMan Station の使用
SysMan Station を使用すると,CPU やディスク装置などのシステム・エンティティをシステム・トポロジ・マップから選択することができます。
アイコン上で MB3 をクリックすると,選択した装置の管理アクションのリストを表示することができます。
その 1 つに,電力管理アプリケーション [dxpower
] があります。
このメニュー項目を選択すると,その装置に対して,dxpower
を実行することができます。
3.6 スワップ領域の追加
オペレーティング・システムは,物理メモリとディスク上のスワップ領域を組み合わせて,仮想メモリを実現します。 仮想メモリは,物理メモリよりはるかに大きく設定することができます。 したがって,仮想メモリを使えば,物理メモリだけの場合より多くのプロセスをサポートできます。 この節では,スワップ領域を構成する際に考慮すべき,重要な仮想メモリの概念を説明します。
注意
仮想メモリ (vm) の不足を示すメッセージが表示される可能性があります。 または,仮想メモリ不足のために,プロセスが強制終了させられる可能性があります。 このような場合,仮想メモリが必ずしもスワップ領域を指しているわけではありません。
vm
カーネル・サブシステムが必要とするリソースが不足していることもあります。スワップ領域が極端には使用されていず,スワップ領域の不足を明確に示すメッセージが表示されていない場合,プロセス毎のメモリを制限していないために問題が発生している可能性があります。 詳細は,3.6.5 項を参照してください。
仮想メモリ (vm) カーネル・サブシステムは,物理メモリの一部,ディスクのスワップ領域,およびさまざまなデーモンとアルゴリズムを使って,プロセスへのメモリ割り当てを制御します。 ページは,システムが割り当てることのできる最小の物理メモリ単位 (8 KB のメモリ) です。
仮想メモリでは,プロセスが最後に参照した仮想ページを物理メモリに保持しようとします。 プロセスが物理メモリにない仮想ページを参照すると,ディスクに保存されていた該当ページが物理メモリに取り込まれます。 更新された仮想ページは,新たな仮想ページが参照されたり,より高い優先度を持つページが必要となったりして,その仮想ページの置かれた物理ページ (物理メモリ内のページ) を明け渡さなければならなくなると,ディスクの一時的な保存場所 (スワップ領域) に移されます。 したがって,あるプロセスの仮想アドレス空間は,物理メモリに置かれているページ,一時的にスワップ領域に置かれているページ,および実行可能ファイルやデータ・ファイルとしてディスクに固定的に置かれているページから構成されることになります。 仮想メモリの処理には,次の操作があります。
ページを再使用するために再生する操作。
中断状態にあるプロセスの更新 (ダーティ) ページをスワップ領域に書き込む操作。 この操作により,大きなメモリ領域が解放されます。
ページングでは,1 ページまたは数ページの仮想ページをディスクと物理メモリとの間で移動させます。 プロセスが物理メモリにない仮想ページを参照した場合,オペレーティング・システムは,その仮想ページをディスクの固定領域またはスワップ領域から物理メモリに読み込みます。 この操作をページインと呼びます。 ページインは,通常,プロセスがイメージを新しく実行し,以前に参照したことのない実行可能イメージの場所を参照した場合に発生します。
物理ページに,新しく参照したページ,またはより高い優先度を持つページを置く必要がある場合,オペレーティング・システムは,更新されていても最近参照されていない仮想ページを 1 ページ (またはページ・クラスタ) だけスワップ領域に書き出します。 この動作を更新ページ書き出しまたはページアウトと呼びます。 更新されたページだけがスワップ領域に書き込まれます。 これは,更新されていないページについては,同じものが常にディスクの固定領域にあるためです。
スワッピングでは,物理メモリとディスクの間で大量の仮想ページを移動させます。 オペレーティング・システムが効率的に動作するためには,ある程度の物理メモリが必要です。 未使用の物理ページ数がシステムで定義されている下限を下回った場合に,個々の仮想ページまたはページ・クラスタをページアウトしても,システムが十分な物理メモリを再生できないときは,オペレーティング・システムは,低優先度のプロセスを選択し,それが使っているすべての物理メモリを再利用します。 この操作をスワップアウトと呼びます。 スワップアウトは,メモリに制約のあるシステムで典型的に発生します。
注意
システム・クラッシュ後にクラッシュ・ダンプをとる機能も,スワップ領域のサイズとどの程度利用できるかによって影響されます。 スワップ領域の割り当てが十分でないと,エラー回復に役立つ情報が入ったクラッシュ・ダンプを保存することはできません。 クラッシュ・ダンプについての詳細は,第 12 章 を参照してください。
次のマニュアルとユーティリティは,スワップ領域を管理する際の参照資料です。
3.6.1.1 関連ドキュメント
スワップ領域を管理する方法は,以下のマニュアルで説明されています。
初期スワップ領域を計画する方法と,オペレーティング・システムのインストレーション時に初期スワップ領域を設定する方法を説明しています。
スワップ領域の構成にかかわる,性能チューニングのためのガイドラインなど,仮想メモリとスワップ領域に関する高度な概念を説明しています。
追加スワップ領域の作成についての詳細は,
swapon
(8)swapon
(2)3.6.1.2 関連ユーティリティ
ユーティリティ | パス名 | 説明 |
Disk Configuration | /usr/sbin/diskconfig |
このグラフィカル・ユーザ・インタフェースは,スワップ領域として割り当てることのできる未使用のパーティションを探すために使用します。
このユーティリティを起動して使用する方法については,
|
カーネル・チューナ | /usr/bin/X11/dxkerneltuner |
このグラフィカル・ユーザ・インタフェースは,システム構成ファイルにあるカーネル・スワップ属性を修正するために使用します。
このユーティリティを起動して使用する方法は,
|
sysconfig | /sbin/sysconfig |
このコマンド行インタフェースは,システム構成ファイルにあるカーネル・スワップ属性を設定するために使用します。
システム属性を変更する方法は,
|
disklabel | /sbin/disklabel |
このコマンド行インタフェースは,システム構成ファイルにあるカーネル・スワップ属性を設定するために使用します。
ディスクにラベル付け (ディスク・パーティションのフォーマットともいいます)
する方法は,
|
スワップ領域は,システムの要件に従って最初に計画し,システムのインストレーションの際に割り当てます。 しかし,システムの性能を改善するためにスワップ領域を追加したり,システムに物理メモリを追加したい場合が出てきます。 利用可能なスワップ領域がないという警告メッセージがシステム・コンソールに示され,スワップ領域の拡張が促されることもあります。 しかし,スワップ領域を追加する前に,突然の領域不足がシステムの問題によるのではないことを確かめてください。 次のコマンドを使用して,プロセスの暴走やユーザの異常な活動によって,スワップ領域が占有されていないことを確認してください。
# ps agx
(あるいは,システム・ログおよびイベント・ファイルでスワップのエラー・メッセージを調べます。) このコマンドから得られるリストが通常どおりなら,スワップ領域を追加する必要があります。
スワップ領域は,swapon
コマンドを実行することで一時的に追加することができます。
追加したスワップ領域を永久的なものにしたい場合,/etc/sysconfigtab
ファイルの
vm
セクションにエントリを追加する必要があります。
その手順は次のとおりです。
swapon
コマンドを使用して,データを上書きすることがないことと,パーティションがオーバラップしていないことを確認します。
ディスクを選択できる場合は,スワップ領域の場所として,恐らく,I/O が頻繁には行われない高速なディスクを選択することになるでしょう。
たとえば,ユーザのファイルが置かれているディスクは I/O の頻度が高くなっています。
diskconfig
ユーティリティを使って,ディスクを調べ,適切なパーティションを選択します。
次に示す例のように
swapon
を実行し,スワップ領域を作成します。
# /sbin/swapon /dev/disk/dsk0b
たとえば,通常のパーシャル・ダンプの代わりにフル・クラッシュ・ダンプをとる場合などは,必要となる追加領域を一時的なスワップ領域ですませられるので,これ以上の操作は必要ありません。 これで,スワップ・パーティションは,使用可能な状態になります。 現在のスワップ構成を調べるために,次のコマンドを実行します。
# /sbin/swapon -s
必要ならば,ここでもう一度ステップ 1 に戻ってパーティションを追加することもできます。
追加したスワップ領域を永久的なものにするために
/etc/sysconfigtab
ファイルの
vm
セクションを次のように編集します。
復元する必要がある場合に備えて,現在のファイルをコピーし,一時的な名前を付けて保存します。
テキスト・エディタを使ってファイルをオープンし,vm:
とうい文字列を探します。
初期スワップ領域としてインストレーション時に作成した
swapdevice=
というエントリがあります。
ここに新しいスワップ・パーティションのデバイス特殊ファイル名を追加します。
それぞれのスワップ・デバイスのエントリは,次のようにコンマで区切ります。
vm: swapdevice=/dev/disk/dsk1b, /dev/disk/dsk3h vm-swap-eager=1
新しいスワップ・パーティションは,システムをリブートするかまたは次のコマンドを実行したときに自動的にオープンされます。
# /sbin/swapon -a
このコマンドがオーバラップしたパーティションに対してどのように動作するかについては,
swapon
(8)
システムに必要なスワップ領域の大きさは,使用するスワップ領域割り当ての方法と,システムの負荷によって異なります。
割り当ての方法を,次の項で説明します。
3.6.3 スワップ領域の必要量の見積り
スワップ領域割り当てには,2 つの方法,つまり,即時モードと延期モード(オーバコミット・モード)があります。 この 2 つの方法の違いは,いつスワップ領域が割り当てられるかにあります。 即時モードでは,更新の可能性がある仮想アドレスが作成された時点でスワップ領域が割り当てられます。 延期モードでは,スワップ領域は予約されず,更新された仮想ページをシステムがスワップ領域に書き込む必要が生ずるまで,割り当てられません。
注意
オペレーティング・システムは,更新された仮想ページをスワップ領域に書き込もうとする際に,スワップ領域が足りないと,プロセスを終了させます。
即時モードでは,更新の可能性がある仮想ページそれぞれについて,最初にスワップ領域のページを予約するため,見積りは延期モードよりも慎重なものになります 。 スワップ領域の割り当てに即時モードを用いる場合,少なくとも,システム上に作成されるアドレス空間のうち,更新の可能性がある空間の合計量に等しいスワップ領域を割り当てる必要があります。 即時モードでは,更新の可能性のある仮想ページがいつ更新されても大丈夫なように十分なスワップ領域を保証するため,延期モードよりはるかに大きなスワップ領域を必要とします。
スワップ領域の割り当てに延期モードを用いる場合,作成され更新される仮想アドレス空間の総量を見積り,この総量とシステムの物理メモリサイズを比較しなければなりません。 この総量が,物理メモリの半分より大きい場合は,更新の可能性があっても物理メモリに入りきらない仮想ページを収容できるだけの十分大きなスワップ領域を確保しなければなりません。 システムの負荷が複雑で,この方法では適切なスワップ領域の量を見積ることができない場合は,まず省略時のスワップ領域を使ってみてから,必要に応じてスワップ領域を調整していく方法を用います。 物理メモリの約半分の量のスワップ領域を使用してみてください。
常にシステムのスワップ領域の使用状況を監視する必要があります。
スワップ領域が枯渇しつつあるというメッセージをシステムが出した時点で,swapon
コマンドを使って,スワップ領域を追加して割り当てます。
即時モードを使っている場合は,スワップ領域が枯渇すると,更新の可能性がある仮想アドレス空間は新たに作成することができません。
延期モードを使っている場合は,スワップ領域が枯渇すると,1 つ以上のプロセスが強制的に終了させられることがあります。
仮想メモリについての詳細は,『システムの構成とチューニング』を参照してください。
3.6.4 スワップ領域割り当て方法の選択
どのスワップ領域割り当て方法を使用しているかは,/etc/sysconfigtab
の
vm:
セクションを見て調べることができます。
また,dxkerneltuner
または
sysconfig
ユーティリティを使って,カーネルの属性値を調べることもできます。
次のようなエントリが表示されるはずです。
vm: swapdevice=/dev/disk/dsk1b, /dev/disk/dsk3h vm-swap-eager=1
vm-swap-eager=
のエントリによって,次のように割り当て方法を調べることができます。
vm-swap-eager=1
システムは即時スワップ・モードを使用している。
vm-swap-eager=0
システムは,延期スワップ・モードを使用している。
/etc/sysconfigtab
ファイルを修正して現在の値を変更するか,dxkerneltuner
または
sysconfig
ユーティリティを使って,動的に属性を変更します。
システムをリブートし,新しいスワップ方法を有効にします。 延期モードに切り替えた場合,または延期方式を使っているシステムをリブートした場合,次のメッセージがリブート時に表示されることがあります。
vm_swap_init: warning sbin/swapdefault swap device not found vm_swap_init: in swap over-commitment mode
個々のプロセスが使用できる仮想メモリの量には,制限があります。
これらの制限は,利用可能なスワップ領域の合計量とは関係ありません。
このため,スワップ・モニタ (たとえば
dxsysinfo
ユーティリティ) でスワップ領域不足が表示されなくても,プロセスの仮想メモリが足りないというエラー・メッセージが表示される可能性があります。
割り当てられた仮想メモリを超えると,プロセスが自動的に強制終了されることがあります。
スワップ割り当てモードの効果についての詳細は,
sys_attrs_vm
(5)vm_swap_eager
属性の説明を参照してください。
スワップ領域が適切であるかどうかを検証するには,次のコマンドを使います。
# swapon -s
「In-use space:
」というタイトルのデータ・フィールドは,利用可能なスワップ領域の大半が使用されているかどうかを示します。
利用可能なスワップ領域を使い切っていないのに,大きなプロセスの実行に問題がある場合は,プロセスに対してさらにリソースを割り当てる必要があります。
proc
サブシステムには,いくつかのカーネル属性があり,プロセス毎の仮想メモリのリソースを制御するために使用することができます。
メモリ不足による問題が発生した場合は,次の方法の使用を検討してください。
ksh
(1)limit
や
ulimit
オプションがあり,プロセスの仮想メモリ・リソースを変更することができます。
sysconfigdb
コマンドまたはカーネル・チューナ GUI を使い,/etc/sysconfigtab
ファイル内のプロセス毎のリソース制限の値を変更します。
カーネル属性の変更の説明は,第 4 章にあります。
『システムの構成とチューニング』を参照して,vm-maxvas
のような仮想メモリ (vm
) サブシステムの属性を調整する方法を調べてください。
システム属性についての詳細は,
sys_attrs
(5)