Solaris のシステム管理 (基本編)

実行制御スクリプト


注 –

Solaris 環境でシステムサービスを起動および停止する方法は、将来のリリースで変更される可能性があります。


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

/sbin ディレクトリ内の各 rc スクリプトには /etc/rcn.d という名前のディレクトリが対応しており、その中にはその実行レベルのさまざまな処理を実行するスクリプトがあります。たとえば、/etc/rc2.d には、実行レベル 2 のプロセスを起動および停止するためのファイル (スクリプト) があります。


# ls /etc/rc2.d
K03samba*          S20sysetup*        S72slpd*            S88utmpd*
K06mipagent*       S21perf*           S73cachefs.daemon*  S89PRESERVE*
K07dmi*            S30sysid.net*      S73nfs.client*      S89bdconfig@
K07snmpdx*         S40llc2*           S74autofs*          S90wbem*
K16apache*         S42ncakmod*        S74syslog*          S91afbinit*
K21dhcp*           S47pppd*           S74xntpd*           S91gfbinit*
K26sshd*           S69inet*           S75cron*            S91ifbinit*
K27boot.server*    S70sckm*           S75flashprom*       S92volmgt*
K28kdc*            S70uucp*           S75savecore*        S93cacheos.finish*
K28kdc.master*     S71ldap.client*    S76nscd*            S94ncalogd*
K28nfs.server*     S71rpc*            S77sf880dr*         S95IIim*
README             S71sysid.sys*      S80lp*              S95svm.sync*
S01MOUNTFSYS*      S72autoinstall*    S80spc*             S98efcode*
S05RMTMPFILES*     S72directory@      S85power*           S99audit*
S10lu*             S72inetsvc*        S88sendmail*        S99dtlogin*

/etc/rcn.d 内のスクリプトは常に、スクリプト名を ASCII 文字列としてソートした順に実行されます。スクリプト名の形式は次のとおりです。

[KS][0-9][0-9]*

名前が K で始まるスクリプトを実行すると、システムサービスが停止 (kill) します。名前が S で始まるスクリプトを実行すると、システムサービスが起動します。

実行制御スクリプトは、/etc/init.d ディレクトリにもあります。これらのファイルは、/etc/rcn.d ディレクトリ内の対応する実行制御スクリプトにリンクされています。

各実行制御スクリプトの処理については、次の節で要約します。

実行制御スクリプトのまとめ

以降の節に、実行レベルを変更したときにシステムサービスを起動および停止するための実行制御スクリプトをまとめてあります。

/sbin/rc0 スクリプト

/sbin/rc0 スクリプトは、/etc/rc0.d スクリプトを実行して次の作業を行います。

/sbin/rc1 スクリプト

/sbin/rc1 スクリプトは、/etc/rc1.d スクリプトを実行して次の作業を行います。

/sbin/rc2 スクリプト

/sbin/rc2 スクリプトは、/etc/rc2.d スクリプトを実行して、機能別にグループ化された次の作業を行います。

ローカルシステム関連の作業

ネットワークサービスまたはセキュリティ関連の作業

インストール関連の作業

ハードウェア関連の作業

実行レベルを変更したときは、次のサービスを移行します。


注 –

実行レベル 2 で起動されるシステムサービスとアプリケーションの多くは、システム上にインストールされているソフトウェアによって決まります。


/sbin/rc3 スクリプト

/sbin/rc3 スクリプトは、/etc/rc3.d スクリプトを実行して次の作業を行います。

/sbin/rc5 および /sbin/rc6 スクリプト

/sbin/rc5 および /sbin/rc6 スクリプトは、/etc/rc0.d/K* スクリプトを実行して、次の作業を行います。

/sbin/rcS スクリプト

/sbin/rcS スクリプトは、/etc/rcS.d スクリプトを実行して、システムを実行レベル S に移行します。これらのスクリプトによって次の作業が行われます。

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


注 –

Solaris 環境でシステムサービスを起動および停止する方法は、将来のリリースで変更される可能性があります。


実行レベルごとに対応するスクリプトを持つことの利点は、/etc/init.d ディレクトリ内の個々のスクリプトを実行することによって、システムの実行レベルを変更しないで (現在の実行レベルの) システムサービスを停止できる点です。

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

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

  2. システムサービスを停止します。


    # /etc/init.d/filename stop
    
  3. システムサービスを再開します。


    # /etc/init.d/filename start
    
  4. サービスが停止または起動していることを確認します。


    # pgrep -f service
    

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

NFS サーバーデーモンを停止するには、次のように入力します。


# /etc/init.d/nfs.server stop
# pgrep -f nfs
#

そして、NFS サーバーデーモンを再開するには、次のように入力します。


# /etc/init.d/nfs.server start
# pgrep -f nfs 
341
343
347
345
# pgrep -f nfs -d, | xargs ps -fp
 UID   PID  PPID  C    STIME TTY      TIME CMD
  daemon   341     1  0   Aug 21 ?        0:00 /usr/lib/nfs/statd
    root   343     1  0   Aug 21 ?        0:00 /usr/lib/nfs/lockd
    root   347     1  0   Aug 21 ?        0:41 /usr/lib/nfs/nfsd
    root   345     1  0   Aug 21 ?        0:02 /usr/lib/nfs/mountd

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


注 –

Solaris 環境でシステムサービスを起動および停止する方法は、将来のリリースで変更される可能性があります。


サービスを起動または停止するための実行制御スクリプトを追加するには、そのスクリプトを/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 /etc/init.d/ /etc/rc2.d/ /etc/rcn.d/
    

例 — 実行制御スクリプトを追加する

次の例は、xyz サービスの実行制御スクリプトを追加する方法を示しています。


# cp xyz /etc/init.d
# chmod 0744 /etc/init.d/xyz
# chown root:sys /etc/init.d/xyz
# 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
# ls _*
# _S100datainit