Solaris ソフトウェア環境では、一連の詳細な実行制御 (rc) スクリプトを使用して実行レベルの移行を制御しています。各実行レベルには次の rc スクリプトが対応しています。これらのスクリプトは、/sbin ディレクトリにあります。
rc0
rc1
rc2
rc3
rc5
rc6
rcS
/sbin ディレクトリ内の各 rc スクリプトには /etc/rcn.d という名前のディレクトリが対応しており、その中にはその実行レベルのさまざまな処理を実行するスクリプトがあります。たとえば、/etc/rc2.d には、実行レベル 2 のプロセスを起動および停止するためのファイル (スクリプト) があります。
# ls /etc/rc2.d K07dmi S70uucp S75cron S91afbinit K07snmpdx S71ldap.client S75flashprom S91ifbinit K28nfs.server S71rpc S75savecore S92volmgt README S71sysid.sys S76nscd S93cacheos.finish S01MOUNTFSYS S72autoinstall S80PRESERVE S94ncalogd S05RMTMPFILES S72inetsvc S80lp S95IIim S20sysetup S72slpd S80spc S95amiserv S21perf S73cachefs.daemon S85power S95ocfserv S30sysid.net S73nfs.client S88sendmail S99audit S40llc2 S74autofs S88utmpd S99dtlogin S47asppp S74syslog S89bdconfig S69inet S74xntpd S90wbem |
/etc/rcn.d 内のスクリプトは常に、スクリプト名を ASCII 文字列としてソートした順に実行されます。スクリプト名の形式は次のとおりです。
[KS][0-9][0-9]*
名前が K で始まるスクリプトを実行すると、システムプロセスが終了 (kill) します。名前が S で始まるスクリプトを実行すると、システムプロセスが起動されます。
実行制御スクリプトは、/etc/init.d ディレクトリにもあります。これらのファイルは、/etc/rcn.d ディレクトリ内の対応する実行制御スクリプトにリンクされています。
各実行制御スクリプトの処理について、表 8-5 から表 8-10 に要約を示します。
実行レベルごとに対応するスクリプトを持つことの利点は、/etc/init.d ディレクトリ内の個々のスクリプトを実行することによって、システムの実行レベルを変更しないで (現在の実行レベルの) 機能を停止できる点です。
スーパーユーザーになります。
# /etc/init.d/filename stop |
機能を再開します。
# /etc/init.d/filename start |
pgrep コマンドを使用して、サービスが停止または起動しているかを確認します。
# pgrep -f service |
NFS サーバーの機能を停止するには、次のように入力します。
# /etc/init.d/nfs.server stop # pgrep -f nfs # |
NFS サービスを再開するには、次のように入力します。
# /etc/init.d/nfs.server start # pgrep -f nfs 141 143 245 247 # pgrep -f nfs -d, | xargs ps -fp 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 |
サービスを起動または停止するための実行制御スクリプトを追加するには、そのスクリプトを /etc/init.d ディレクトリにコピーして、rcn.d ディレクトリ内の適切なファイルへのリンクを作成します。
実行制御スクリプトの命名法についての詳細は、/etc/rcn.d ディレクトリ内の README ファイルを参照してください。以下に、実行制御スクリプトの追加方法を説明します。
スーパーユーザーになります。
スクリプトを /etc/init.d ディレクトリにコピーします。
# cp filename /etc/init.d # chmod 0744 /etc/init.d/filename # chown root:sys /etc/init.d/filename |
適切な rcn.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 # mv filename _filename |
スクリプト名が変更されたことを確認します。
# ls # _filename |
次の例は、S100datainit というスクリプト名を変更しますが、元のスクリプトも保存しています。
# cd /etc/rc2.d # mv S100datainit _S100datainit |