Solaris ソフトウェア環境では、一連の詳細な実行制御 (rc) スクリプトを使用して実行レベルの移行を制御しています。各実行レベルには次の rc スクリプトが対応しています。これらのスクリプトは、/sbin ディレクトリにあります。
rc0
rc1
rc2
rc3
rc5
rc6
rcS
/sbin ディレクトリ内の各 rc スクリプトには /etc/rcn.d という名前のディレクトリが対応しており、その中にはその実行レベルのさまざまな処理を実行するスクリプトがあります。たとえば、/etc/rc2.d には、実行レベル 2 のプロセスを起動および停止するためのファイル (スクリプト) があります。
# ls /etc/rc2.d K20spc@ S70uucp* S80lp* K60nfs.server* S71rpc* S80spc@ K76snmpdx* S71sysid.sys* S85power* K77dmi* S72autoinstall* S88sendmail* README S72inetsvc* S88utmpd* S01MOUNTFSYS* S73nfs.client* S89bdconfig@ S05RMTMPFILES* S74autofs* S91leoconfig* S20sysetup* S74syslog* S92rtvc-config* S21perf* S74xntpd* S92volmgt* S30sysid.net* S75cron* S93cacheos.finish* S47asppp* S76nscd* S99audit* S69inet* S80PRESERVE* S99dtlogin*
/etc/rcn.d 内のスクリプトは常に、スクリプト名を ASCII 文字列としてソートした順に実行されます。スクリプト名の形式は次のとおりです。
[K,S][0-9][0-9][A-Z][0-99]
名前が K で始まるスクリプトを実行すると、システムプロセスが終了 (kill) します。名前が S で始まるスクリプトを実行すると、システムプロセスが起動されます。
実行制御スクリプトは、/etc/init.d ディレクトリにもあります。これらのファイルは、/etc/rc*.d ディレクトリ内の対応する実行制御スクリプトにリンクされています。
各実行制御スクリプトの処理を表 6-5 から表 6-11 に要約します。
実行レベルごとに対応するスクリプトを持つことの利点は、/etc/init.d ディレクトリ内の個々のスクリプトを実行することにより、システムの実行レベルを変更しないで (現在の実行レベルの) 機能を停止できる点です。
スーパーユーザーになります。
# /etc/init.d/filename stop
機能を再開します。
# /etc/init.d/filename start
ps コマンドと grep コマンドを使用すれば、サービスが停止しているか起動しているかを確認できます。
# ps -ef | grep service
NFS サーバーの機能を停止するには、次のように入力します。
# /etc/init.d/nfs.server stop # ps -ef | grep nfs #
NFS サービスを再開するには、次のように入力します。
# /etc/init.d/nfs.server start # ps -ef | grep nfs root 141 1 40 Jul 31 ? 0:00 /usr/lib/nfs/statd root 143 1 80 Jul 31 ? 0:01 /usr/lib/nfs/lockd root 245 1 34 Jul 31 ? 0:00 /usr/lib/nfs/nfsd -a 16 root 247 1 80 Jul 31 ? 0:02 /usr/lib/nfs/mountd root 1324 1318 11 13:29:52 pts/0 0:00 grep nfs
サービスを起動または停止するための実行制御スクリプトを追加するには、そのスクリプトを /etc/init.d にコピーして、rc*.d ディレクトリ内の適切なファイルとリンクを作成します。
実行制御スクリプトの命名法についての詳細は、/etc/rc*.d ディレクトリ内の README ファイルを参照してください。以下に、実行制御スクリプトの追加方法を説明します。
スーパーユーザーになります。
スクリプトを /etc/init.d ディレクトリにコピーします。
# cp filename /etc/init.d
適切な rc*.d ディレクトリへのリンクを作成します。
# cd /etc/init.d # ln filename /etc/rc2.d/Snnfilename # ln filename /etc/rcn.d/Knnfilename
ls コマンドを使用すれば、スクリプトが指定されたディレクトリ内のファイルにリンクされているかどうかを確認できます。
# ls /etc/init.d/ /etc/rc2.d/ /etc/rcn.d/
# cp xyz /etc/init.d# cd /etc/init.d# ln xyz /etc/rc2.d/S100xyz# ln xyz /etc/rc0.d/K100xyz # ls /etc/init.d /etc/rc2.d /etc/rc0.d
実行制御スクリプトを無効にするには、スクリプト名の先頭にドット (.) を付けます。ドットで始まるファイルは実行されません。接尾辞を追加してファイルをコピーすると、両方のファイルが実行されます。
スーパーユーザーになります。
スクリプト名の先頭にドット (.)を付けます。
# cd /etc/rcn.d # cp filename .filename
スクリプトの名前が変更されていることを確認します。
# ls -a # .filename
次の例では、K00ANNOUNCE というスクリプトの名前を変更していますが、元のスクリプトも保存しています。
# cd /etc/rc0.d # cp K00ANNOUNCE .K00ANNOUNCE