Solaris のシステム管理

実行制御スクリプト

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

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

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

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

  2. 機能を停止します。

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

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

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

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

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

        # cp filename /etc/init.d
    
  3. 適切な rc*.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
        # cp filename .filename
    
  3. スクリプトの名前が変更されていることを確認します。

        # ls -a 
        # .filename
    

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

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

# cd /etc/rc0.d
# cp K00ANNOUNCE .K00ANNOUNCE