/etc/rc.sysinit スクリプトにより Turbolinux 11 Server の初期化処理が完了すると、/sbin/init プログラムは、ランレベルを引数にして /etc/rc スクリプトを実行します。例えば、ランレベル 3 で Turbolinux 11 Server を起動したときは /etc/rc 3 が実行され、ランレベル 5 で起動したとき /etc/rc 5 が実行されます。この /etc/rc は、各ランレベルで開始するサービスを制御するためのスクリプトです。/etc/rc はその中で、/etc/rcn.d/ (n はランレベルの数字)に格納されているスクリプトを実行します。つまり、ランレベル 3 のときは、/etc/rc3.d/ ディレクトリにあるスクリプトが実行されることになります。ls -l コマンドで /etc/rc3.d/ ディレクトリを確認すると、以下のようなファイルが格納されています。
# ls -l 合計 0 lrwxrwxrwx 1 root root 15 2007-11-01 10:09 S00acpid -> ../init.d/acpid* lrwxrwxrwx 1 root root 16 2007-11-01 10:09 S02kparam -> ../init.d/kparam* lrwxrwxrwx 1 root root 17 2007-11-01 10:09 S10network -> ../init.d/network* lrwxrwxrwx 1 root root 19 2007-11-01 10:09 S30syslog-ng -> ../init.d/syslog-ng* lrwxrwxrwx 1 root root 14 2007-11-01 10:09 S35udev -> ../init.d/udev* lrwxrwxrwx 1 root root 16 2007-11-01 10:09 S50xinetd -> ../init.d/xinetd* lrwxrwxrwx 1 root root 14 2007-11-01 10:09 S55sshd -> ../init.d/sshd* lrwxrwxrwx 1 root root 18 2007-11-01 10:09 S75keytable -> ../init.d/keytable* lrwxrwxrwx 1 root root 21 2007-11-01 10:09 S85UpdateCheck -> ../init.d/UpdateCheck* lrwxrwxrwx 1 root root 15 2007-11-01 10:09 S90crond -> ../init.d/crond* lrwxrwxrwx 1 root root 11 2007-10-30 10:03 S99local -> ../rc.local* |
出力結果を確認すると、これらのスクリプトは /etc/init.d/ ディレクトリにあるファイルへのシンボリックリンクになっていることが分かります。リンク先にあるこれらのファイルがサービスの開始や停止を制御するためのスクリプトです。/etc/init.d/ ディレクトリには、数多くの制御スクリプトが格納されています。
例えば、Web サーバー Apache の制御スクリプトは、/etc/init.d/httpd です。このスクリプトの引数に start を付けて実行すると Apache を起動することができます。
# /etc/init.d/httpd start |
また、stop を指定すれば Apache は停止します。
# /etc/init.d/httpd stop |
ここで、/etc/rcn.d/ ディレクトリ以下のファイル名を確認すると、K または S で始まり、続いて 2 桁の数字が付いていることが分かります。これらのファイル名は、以下の規則に従い名前が付けられています。
K で始まるファイルは停止するサービス
S で始まるファイルは開始するサービス
S または K の後の 2 桁の数字はスクリプトを実行する順序
/etc/rc スクリプトは、/etc/rcn.d/ ディレクトリにあるこれらシンボリックリンクのファイル名を参照し、先頭に K が付いている場合には stop を引数に指定して実行します。これにより、対象のサービスは停止されます。次に、先頭に S が付いている場合には start を引数にして実行します。これにより、対象のサービスは開始されます。
このような仕組みで、/etc/rc スクリプトは各ランレベルで停止するサービス、開始するサービスを決定しています。したがって、各ランレベルで開始するサービスを設定するには、/etc/rcn.d/ ディレクトリにそのサービス制御スクリプトへのシンボリックリンクを作成しなければなりません。逆に、サービスを提供しないのであれば、シンボリックリンクを削除するか、シンボリックリンクを K から始まるファイル名にリネームする必要があります。この操作は、chkconfig コマンド、もしくはサービス設定ツール(turboservice)を使用すると簡単に実行することができます。chkconfig や turboservice の使い方については、第7章 で解説します。
/etc/rc.local は、システムにおいて特別な意味を持つスクリプトで、Turbolinux 11 Server の起動時に実行させたい独自の処理を記述しておくことができます。なお、/etc/rcn.d/ ディレクトリにあるファイルは、/etc/init.d/ 以下の制御スクリプトへのシンボリックリンクとなっていますが、/etc/rc3.d/ や /etc/rc5.d/ 以下にある S99local は、/etc/rc.local へのシンボリックリンクとなっています。
# ls -l /etc/rc3.d/S99local lrwxrwxrwx 1 root root 11 Sep 12 23:26 /etc/rc3.d/S99local -> ../rc.local* |