Solaris のシステム管理 (第 1 巻)

実行制御スクリプト

Solaris ソフトウェア環境では、一連の詳細な実行制御 (rc) スクリプトを使用して実行レベルの移行を制御しています。各実行レベルには次の rc スクリプトが対応しています。これらのスクリプトは、/sbin ディレクトリにあります。

/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 ディレクトリ内の個々のスクリプトを実行することによって、システムの実行レベルを変更しないで (現在の実行レベルの) 機能を停止できる点です。

実行制御スクリプトを使用してサービスを起動または停止する方法

  1. スーパーユーザーになります。

  2. 機能を停止します。


    # /etc/init.d/filename stop
    
  3. 機能を再開します。


    # /etc/init.d/filename start
    
  4. 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 ファイルを参照してください。以下に、実行制御スクリプトの追加方法を説明します。

実行制御スクリプトを追加する方法

  1. スーパーユーザーになります。

  2. スクリプトを /etc/init.d ディレクトリにコピーします。


    # cp filename /etc/init.d
    # chmod 0744 /etc/init.d/filename
    # chown root:sys /etc/init.d/filename
    
  3. 適切な rcn.d ディレクトリへのリンクを作成します。


    # cd /etc/init.d
    # ln filename /etc/rc2.d/Snnfilename
    # ln filename /etc/rcn.d/Knnfilename
    
  4. 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

実行制御スクリプトを無効にする

実行制御スクリプトを無効にするには、スクリプト名の先頭にドット (.) を付けます。ドットで始まるファイルは実行されません。接尾辞を追加してファイルをコピーすると、両方のファイルが実行されます。

実行制御スクリプトを無効にする方法

  1. スーパーユーザーになります。

  2. スクリプト名の先頭に下線 ( _ ) を付けて、スクリプト名を変更します。


    # cd /etc/rcn.d
    # mv filename _filename
    
  3. スクリプト名が変更されたことを確認します。


    # ls
    # _filename
    

例-実行制御スクリプトを無効にする

次の例は、S100datainit というスクリプト名を変更しますが、元のスクリプトも保存しています。


# cd /etc/rc2.d
# mv S100datainit _S100datainit