デーモン、プログラムの自動起動の仕方

 サーバーとしてパソコンを運用するなら、パソコンを起動と同時にプログラム、コマンドを動作させたい場合があるはずです。 このページでは”chkconfig”を使用して、サーバー起動と同時にプログラムを起動させる方法の掲載します。

≪ 項目 ≫
1.initプロセス
2.インストールしたパッケージを chkconfig で設定
3.その他プログラムを chkconfig で設定

 1.initプロセス

 Linux を起動して Kernel が読み込まれると、まずinitプロセスが起動します。 このinitプロセスは、必要なファイルシステムのマウント処理や必要なデーモンを起動行い、ログインプロンプトを出力して待機状態にする役割を持っています。 このページでは、initプロセスに起動したいデーモン、コマンドを実行させる設定をします。
 initプロセスは Kernel よりランレベルという、OSの実行状態を表す値を引数として受け取り、ランレベルに応じて起動するデーモンを判断します。
下の表がランレベルとその状態です。

ラン
レベル
意味 状態
0 Halt システムが終了に向かう状態
1 Single シングルユーザーモード状態
2 No NFS NFS関連を除いたネットワーク機能が使える状態
3 Normal 標準状態(通常の起動)
4 Undefined 特に決まってない(Turbo Linuxでは未使用)
5 X Window System GUIによるログイン状態
6 Reboot 再起動に向かう状態


 起動するデーモンのスクリプトは、”/etc/rc0.d”〜”/etc/rc6.d”のディレクトリィの直下にあります。 ランレベルが”3”で起動している場合は、”/etc/rc3.d/”のディレクトリィ直下にあるスクリプトが実行されることになります。(標準設定の場合)
 ちなみにスクリプト名に”k**〜〜”と”s**〜〜”( * は数字)とありますが、k は引数に stop をs は引数に start を与えて実行します。 数字は優先度を表します。


 2.インストールしたパッケージを chkconfig で設定

 パッケージでインストールしたデーモンやプログラムは、だいたい”/etc/rc.d/init.d/”のディレクトリィ直下に起動スクリプトが作成されます。 ”chkconfig”コマンドを使用する事によって、簡単に自動起動の設定ができます。
 デーモンによっては、パッケージでインストールした時点で既に自動起動の設定がされている場合がありますので、以下のコマンドを実行して確認します。

 chkconfig --list

 --listをオプションに指定することによって、現在の設定を出力できます。

network0:off1:off2:on3:on4:on5:off6:off
〜 省略 〜
xinetd0:off1:off2:off3:on4:on5:off6:off
proftpd0:off1:off2:off3:on4:on5:off6:off
xinetd based services:
〜 省略 〜


 ここで 3:on となっていますが、これはランレベルが”3”の場合は自動起動するということです。
on、off を切り替える場合は以下の様にします。

 chkconfig --level << ランレベル >> << スクリプト名 >> on Or off Or reset

例として、proftpdのランレベル 3,4,5 を on に変更する場合は

 chkconfig --level 345 proftpd on

とします。


 3.その他プログラムを chkconfig で設定

 ソースからコンパイルしたデーモン(このサイトならApache、Tomcatなど)なども、”chkconfig”で自動起動の設定をする事もできます。 自分で新規に起動スクリプトを作成すれば良いです。
 例として、ソースからコンパイルしたApacheを自動起動するとします。 まず”/etc/rc.d/init.d/”のディレクトリィ直下に適当な名前でスクリプトを作成します。以下の点に注意して作成してください。

#!/bin/sh<<--(1)
. /etc/rc.d/init.d/functions
# chkconfig: 345 70 70<<--(2)
# description: 〜〜〜
〜 省略 〜
case "$1" in<<--(3)
  start)
〜 省略 〜
  stop)
〜 省略 〜


 (1) スクリプトを作成する時に必要な宣言です。決まり文句みたいな物なので記述してください。

 (2) この2行は、chkconfigコマンドを使用して自動起動の設定をする時に必要な記述です。 --addオプションで追加する時に、この2行が無いとエラーになります。 書式は

 chkconfig: <<on にするランレベル>> <<Start時の優先順位>> <<Stop時の優先順位>>

 です。上記の場合だと、ランレベル3,4,5の場合に優先順位70で自動起動します。
 優先順位は0〜99までですが、70以上の値で設定するのが良いでしょう。
 description: の箇所はスクリプトの説明です。〜〜〜の部分は何を記述しても良いですが、この行が無いとやはりエラーになります。

 (3) 必ずスクリプト作成する時は、引数 start と stop の処理を入れてください。

スクリプトが完成したら、”chkconfig”コマンドで追加します。以下の様にしてください。

 chkconfig --add << 新規作成したスクリプト >>

 以上で設定は完了です。

 補足ですが、パッケージからインストールしたデーモンのスクリプトは、始めから追加されているので --add オプションで追加する必要はありません。
 ”./bash_profile”などで設定した環境変数は、自動起動用のスクリプトでは使用できませんので注意してください。
(設定を読み込む前にスクリプトが起動するので)



先頭に戻る TOPページに戻る