3    システム環境のカスタマイズ

この章では,システム環境をカスタマイズする方法を示します。 これから説明する作業の中に,初期インストレーションとシステム構成の際にすでに行っているものもあるかもしれません。 システムに変更が必要になった場合,新たな処理負荷の要求に対応させるため,この作業をいくつか行う必要があるかもしれません。 たとえば,インストレーションの際に,初期スワップ領域 (仮想メモリ) を作成しますが,物理メモリをシステムに追加する場合,それに対応して,スワップ領域を増やす必要が出てくる場合もあります。

この章では,以下の項目について説明します。

セキュリティおよびネットワーク環境のカスタマイズについては,次のマニュアルを参照してください。

3.1    システム初期化ファイルの確認と変更

システム環境を定義したりカスタマイズする場合,プロセスおよび実行レベルの指定と制御を行う特定の初期化ファイルを変更します。 オペレーティング・システムによって,有効な実行レベルと各実行レベルを指定するプロセスを定義した省略時のファイルがテンプレートとして提供されます。 これらのファイルを使用することにより,システム環境を容易に変更またはカスタマイズすることができます。 また,国際規格をサポートする場合は,それぞれの国際規格に対応するファイルの構造と条件に精通している必要があります。

この節では,システム環境の初期化および制御をするためのファイルについて紹介し,それらのファイルの使用方法および変更方法について説明します。 利用できる機能を理解し,その機能を使用するためには,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 章で説明します。

3.1.1    /etc/inittab ファイル

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 はプロセスを開始して,終了するのを待ちます。 この実行レベルにいる限り,initinittab ファイル内のエントリの読み取りを中断します。

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 キーワードを探し,実行レベルの定義を見つけます。 inittabinitdefault のエントリがない場合は,システムは実行レベルの入力を要求します。 上記の inittab ファイルの例では,次に示す行で initdefault の実行レベルを 3 に設定しています。 実行レベル 3 はネットワーク・サービス付きのマルチユーザ・モードを示します。

is:3:initdefault:
 

3.1.1.2    待ち実行レベルの指定

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 プロセスの実行を禁止する実行レベルにシステムが入った場合に,システム・コンソールが使用不能になる可能性があります。

3.1.1.4    端末と端末実行レベルの指定

システムがサポートしている各端末でユーザがログインできるように設定するには,システムで利用可能なターミナル・タイプを調べ,サポートされている個々のターミナル・タイプに対して実行レベルと 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
 

3.1.2    init および rc ディレクトリの構造

オペレーティング・システムには,初期化および実行のためのコマンド・ディレクトリ構造が用意されています。 このディレクトリ構造には,次のような 4 つの主要な構成要素があります。

また,各 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]
 

各エントリの構文は次のとおりです。

  1. 分,時,日,月,および曜日を指定します。 曜日については,値 0 (ゼロ) は日曜日を示し,値 1 は月曜日を示します。 それぞれの値は,1 つの値,コンマで区切って 2 つ以上の値,またはダッシュ (-) で値の範囲を指定することができます。 また,アスタリスク (*) で,すべての値を示すこともできます。 たとえば,時にアスタリスク (*) を指定すると,コマンドは 1 時間ごとに実行されます。 [例に戻る]

  2. 指定された時刻に実行するコマンドを指定します。 [例に戻る]

  3. コマンドの引数を任意に指定します。 [例に戻る]

コメントをファイルに追加するには,行頭に番号記号 (#) を指定してください。

/var/spool/cron/crontabs ディレクトリの中のファイルにはシステム・ユーザにちなんだ名称が付けられ,ファイルの中のコマンドはそのユーザの権限のもとで実行されます。 たとえば,adm ファイルのコマンドは adm の権限のもとで実行されます。

crontab コマンドを使用するためには,実行するファイル名と一致するユーザでなければなりません。 たとえば,ユーザ admcrontab コマンドを実行した場合,そのコマンドは /var/spool/cron/crontabs/adm ファイルに対して実行されます。

たとえば,adm 権限のもとで実行されるものとしてコマンドを cron デーモンに発行するには,次のようにします。

  1. adm でログインします。

  2. 次のように -l オプション付きで crontab コマンドを入力して,/usr/spool/cron/crontabs/adm ファイルをホーム・ディレクトリの中の一時ファイルにコピーします。

    % crontab -l > temp_adm
     
    

  3. 一時ファイルを編集して,指定した時刻に実行したいコマンドを追加します。

  4. 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 環境変数でロケールを設定すると,次の機能に対する省略時の値が自動的に設定されるためです。

ただし,ごくまれに,ロケール内の上記のいずれかのカテゴリの省略時の設定を変更する必要があります。 この場合は,これらのカテゴリを指定する変数を再設定します。 詳細については,次の項を参照してください。

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.3    国際化機能のカスタマイズ

オペレーティング・システムには,多くの国際化機能があります。 ユーザまたはローカル・サイトの責任者が,オペレーティング・システムのどの国際化機能 (ワールドワイド・サポート機能とも呼ばれる) の構成要素が必要かを決定します。 ワールドワイド・サポートはオプションのサブセットであり,インストール時に選択することができます。 システム管理者の仕事は,次のようなユーザのために,これらの機能を設定して保守することです。

ワールドワイド・サポートに関して 3 つの情報源が用意されています。

3.4    時間帯のカスタマイズ

時間帯情報は,/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 n Mm.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 環境変数の指定例では,次のことが指定されています。

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    電力管理のカスタマイズ

オペレーティング・システムには電力を節約する機能が備わっており,適切なハードウェアを装備したシステムであれば,この機能を使って節電することができます。 お手持ちのシステムが電力管理をサポートしているかどうかは,システムのオーナーズ・マニュアルを参照してください。 電力管理ユーティリティを使用すれば,次のことができます。

節電機能は,次のユーティリティを使い,いくつかの方法で起動し管理することができます。

3.5.1    dxpower ユーティリティのグラフィカル・ユーザ・インタフェースの使用

グラフィカル・ユーザ・インタフェース dxpower は,ホスト・システムのグラフィク・コンソールで使用するか,またはコマンド行から呼び出すことができます。 機能によっては,パスワードで保護されているものがあります。 そのような機能は,root でログインするシステム管理者だけが使えます。 特権のないユーザは,モニタの省エネ機能など,限られた機能だけを使用することができます。 CDE を使っている場合は,次の手順に従って dxpower 電力管理ユーティリティをオープンすることができます。

  1. 「アプリケーション・マネージャ」アイコンをクリックします。

  2. 「システム管理」アプリケーション・グループ・アイコンをダブルクリックします。

  3. 「日常管理」アプリケーション・グループ・アイコンをダブルクリックします。

  4. 「パワー・マネジメント」アイコンをダブルクリックします。

端末または他の X11 ウィンドウ環境を使用している場合は,コマンド行からdxpower ユーティリティを起動することができます。 次のように入力してください。

# /usr/bin/X11/dxpower

dxpower ユーティリティを起動すると,電力管理ウィンドウが画面に表示されます。 このウィンドウには,動作モードを選択するためのチェックボックスと休止時間の限度を設定するためのスライデング・スケール (バー) があります。 休止時間は,装置が節電モードになるまでの時間であり,1 〜 60 分の間で設定します。 ログイン特権で許可されれば,グラフィカル・インタフェースで次のことができます。

注意

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 コマンドは同時に使用しないでください。 同時に使用すると,予測できない動作をすることがあります。

3.5.2.1    電力管理値の変更

カーネルの再起動時に有効になる電力管理値を変更するには,stanza を作成します。 詳細については, stanza(4) を参照してください。 stanza ファイルには,次の電力管理属性を含めることができます。

たとえば,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_timegraphics_standby_dwellgraphics_suspend_dwellgraphics_off_dwell の各属性に対して指定された値は,アイドル状態にあるハードウェアの電源を切断するまでの時間 (分単位) を示しています。 この場合,電力管理サブシステムは 20 分待機した後にディスクをスピンダウンし,5,10,15 分待機した後,それぞれ DPMS の standbysuspendoff モードにします。 残りの属性については,値 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    関連ドキュメントおよびユーティリティ

次のマニュアルとユーティリティは,スワップ領域を管理する際の参照資料です。

3.6.1.1    関連ドキュメント

スワップ領域を管理する方法は,以下のマニュアルで説明されています。

インストレーション・ガイド -- 上級ユーザ編

初期スワップ領域を計画する方法と,オペレーティング・システムのインストレーション時に初期スワップ領域を設定する方法を説明しています。

システムの構成とチューニング

スワップ領域の構成にかかわる,性能チューニングのためのガイドラインなど,仮想メモリとスワップ領域に関する高度な概念を説明しています。

追加スワップ領域の作成についての詳細は, swapon(8)swapon(2) を参照してください。 関連ユーティリティのリファレンス・ページについては,3.6.1.2 項を参照してください。

3.6.1.2    関連ユーティリティ

次のユーティリティは,スワップ領域の管理の際に使用します。

ユーティリティ パス名 説明
Disk Configuration /usr/sbin/diskconfig

このグラフィカル・ユーザ・インタフェースは,スワップ領域として割り当てることのできる未使用のパーティションを探すために使用します。 このユーティリティを起動して使用する方法については, diskconfig(8) を参照してください。

カーネル・チューナ /usr/bin/X11/dxkerneltuner

このグラフィカル・ユーザ・インタフェースは,システム構成ファイルにあるカーネル・スワップ属性を修正するために使用します。 このユーティリティを起動して使用する方法は, dxkerneltuner(8) を参照してください。

sysconfig /sbin/sysconfig

このコマンド行インタフェースは,システム構成ファイルにあるカーネル・スワップ属性を設定するために使用します。 システム属性を変更する方法は, sysconfig(8) を参照してください。

disklabel /sbin/disklabel

このコマンド行インタフェースは,システム構成ファイルにあるカーネル・スワップ属性を設定するために使用します。 ディスクにラベル付け (ディスク・パーティションのフォーマットともいいます) する方法は, disklabel(8) を参照してください。

3.6.2    スワップ領域の割り当て

スワップ領域は,システムの要件に従って最初に計画し,システムのインストレーションの際に割り当てます。 しかし,システムの性能を改善するためにスワップ領域を追加したり,システムに物理メモリを追加したい場合が出てきます。 利用可能なスワップ領域がないという警告メッセージがシステム・コンソールに示され,スワップ領域の拡張が促されることもあります。 しかし,スワップ領域を追加する前に,突然の領域不足がシステムの問題によるのではないことを確かめてください。 次のコマンドを使用して,プロセスの暴走やユーザの異常な活動によって,スワップ領域が占有されていないことを確認してください。

# ps agx

(あるいは,システム・ログおよびイベント・ファイルでスワップのエラー・メッセージを調べます。) このコマンドから得られるリストが通常どおりなら,スワップ領域を追加する必要があります。

スワップ領域は,swapon コマンドを実行することで一時的に追加することができます。 追加したスワップ領域を永久的なものにしたい場合,/etc/sysconfigtab ファイルの vm セクションにエントリを追加する必要があります。 その手順は次のとおりです。

  1. swapon コマンドを使用して,データを上書きすることがないことと,パーティションがオーバラップしていないことを確認します。 ディスクを選択できる場合は,スワップ領域の場所として,恐らく,I/O が頻繁には行われない高速なディスクを選択することになるでしょう。 たとえば,ユーザのファイルが置かれているディスクは I/O の頻度が高くなっています。

    diskconfig ユーティリティを使って,ディスクを調べ,適切なパーティションを選択します。

  2. 次に示す例のように swapon を実行し,スワップ領域を作成します。

    # /sbin/swapon /dev/disk/dsk0b
    

    たとえば,通常のパーシャル・ダンプの代わりにフル・クラッシュ・ダンプをとる場合などは,必要となる追加領域を一時的なスワップ領域ですませられるので,これ以上の操作は必要ありません。 これで,スワップ・パーティションは,使用可能な状態になります。 現在のスワップ構成を調べるために,次のコマンドを実行します。

    # /sbin/swapon -s
    

    必要ならば,ここでもう一度ステップ 1 に戻ってパーティションを追加することもできます。

  3. 追加したスワップ領域を永久的なものにするために /etc/sysconfigtab ファイルの vm セクションを次のように編集します。

このコマンドがオーバラップしたパーティションに対してどのように動作するかについては, swapon(8) を参照してください。

システムに必要なスワップ領域の大きさは,使用するスワップ領域割り当ての方法と,システムの負荷によって異なります。 割り当ての方法を,次の項で説明します。

3.6.3    スワップ領域の必要量の見積り

スワップ領域割り当てには,2 つの方法,つまり,即時モードと延期モード(オーバコミット・モード)があります。 この 2 つの方法の違いは,いつスワップ領域が割り当てられるかにあります。 即時モードでは,更新の可能性がある仮想アドレスが作成された時点でスワップ領域が割り当てられます。 延期モードでは,スワップ領域は予約されず,更新された仮想ページをシステムがスワップ領域に書き込む必要が生ずるまで,割り当てられません。

注意

オペレーティング・システムは,更新された仮想ページをスワップ領域に書き込もうとする際に,スワップ領域が足りないと,プロセスを終了させます。

即時モードでは,更新の可能性がある仮想ページそれぞれについて,最初にスワップ領域のページを予約するため,見積りは延期モードよりも慎重なものになります 。 スワップ領域の割り当てに即時モードを用いる場合,少なくとも,システム上に作成されるアドレス空間のうち,更新の可能性がある空間の合計量に等しいスワップ領域を割り当てる必要があります。 即時モードでは,更新の可能性のある仮想ページがいつ更新されても大丈夫なように十分なスワップ領域を保証するため,延期モードよりはるかに大きなスワップ領域を必要とします。

スワップ領域の割り当てに延期モードを用いる場合,作成され更新される仮想アドレス空間の総量を見積り,この総量とシステムの物理メモリサイズを比較しなければなりません。 この総量が,物理メモリの半分より大きい場合は,更新の可能性があっても物理メモリに入りきらない仮想ページを収容できるだけの十分大きなスワップ領域を確保しなければなりません。 システムの負荷が複雑で,この方法では適切なスワップ領域の量を見積ることができない場合は,まず省略時のスワップ領域を使ってみてから,必要に応じてスワップ領域を調整していく方法を用います。 物理メモリの約半分の量のスワップ領域を使用してみてください。

常にシステムのスワップ領域の使用状況を監視する必要があります。 スワップ領域が枯渇しつつあるというメッセージをシステムが出した時点で,swapon コマンドを使って,スワップ領域を追加して割り当てます。 即時モードを使っている場合は,スワップ領域が枯渇すると,更新の可能性がある仮想アドレス空間は新たに作成することができません。 延期モードを使っている場合は,スワップ領域が枯渇すると,1 つ以上のプロセスが強制的に終了させられることがあります。

仮想メモリについての詳細は,『システムの構成とチューニング』を参照してください。

3.6.4    スワップ領域割り当て方法の選択

どのスワップ領域割り当て方法を使用しているかは,/etc/sysconfigtabvm: セクションを見て調べることができます。 また,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

3.6.5    明白なスワップ領域不足の修正

個々のプロセスが使用できる仮想メモリの量には,制限があります。 これらの制限は,利用可能なスワップ領域の合計量とは関係ありません。 このため,スワップ・モニタ (たとえば dxsysinfo ユーティリティ) でスワップ領域不足が表示されなくても,プロセスの仮想メモリが足りないというエラー・メッセージが表示される可能性があります。 割り当てられた仮想メモリを超えると,プロセスが自動的に強制終了されることがあります。

スワップ割り当てモードの効果についての詳細は, sys_attrs_vm(5)vm_swap_eager 属性の説明を参照してください。

スワップ領域が適切であるかどうかを検証するには,次のコマンドを使います。

#  swapon -s

In-use space:」というタイトルのデータ・フィールドは,利用可能なスワップ領域の大半が使用されているかどうかを示します。

利用可能なスワップ領域を使い切っていないのに,大きなプロセスの実行に問題がある場合は,プロセスに対してさらにリソースを割り当てる必要があります。 proc サブシステムには,いくつかのカーネル属性があり,プロセス毎の仮想メモリのリソースを制御するために使用することができます。

スタック制限

per-proc-stack-size 属性と max-per-proc-stack-size 属性。

データ制限

per-proc-data-size 属性と max-per-proc-data-size 属性。

アドレス空間

max-per-proc-address-space 属性と per-proc-address-space 属性。

メモリ不足による問題が発生した場合は,次の方法の使用を検討してください。