この特集のトップページへ
この回のトップページへ

起動後の各種設定は/etc/ディレクトリ下の設定ファイルで行われる

 Linuxを始めとするUNIX系OSでは,多くの場合「/etc/」ディレクトリ下の設定ファイルを編集し,システムの動作設定を行う。

 前述したように,ディストリビューションに最初から含まれていないソフトをインストールした場合,ソフトの自動起動を制御するには「/etc/rc.d」ディレクトリ内のファイルを変更する必要がある。/etc/rc.dディレクトリの中は,通常は次のようになっている。

ファイル名 ファイルの役目
/etc/rc アプリケーション起動用スクリプト本体
/etc/rc0.d/ ランレベル0の際の起動スクリプト
/etc/rc1.d/ ランレベル1の際の起動スクリプト
/etc/rc2.d/ ランレベル2の際の起動スクリプト
/etc/rc3.d/ ランレベル3の際の起動スクリプト
/etc/rc4.d/ ランレベル4の際の起動スクリプト
/etc/rc5.d/ ランレベル5の際の起動スクリプト
/etc/rc6.d/ ランレベル6の際の起動スクリプト
/etc/rc.local 独自設定用スクリプト

 先に説明したように,サーバソフトウェアなどの起動は,/etc/init.d ディレクトリにあるスクリプト本体を/etc/rc?.d ディレクトリ下に作ったリンクファイルから呼びだして実行する。独自にアプリケーションを追加した場合には,/etc/init.dディレクトリに起動スクリプトを作成し,/etc/rc.?ディレクトリからリンクを張ることになる。実例を追ってみよう。

 ここで,Apache(Webサーバ)を自分でコンパイルして/usr/local/apache/ディレクトリ下にインストールしたとしよう。マシンの起動と共に自動的に動作させる設定を解説する。もちろん,ディストリビューションに含まれているApacheがインストールされていないことが前提になるので注意しよう。

 コンパイル後にまず最初に行うことは,/etc/rc.d/init.dディレクトリ下の起動スクリプトの作成だ。これは,すでに存在するファイルを編集するのもよいし,いちから作成する方法でもよい。ここでは,簡単なスケルトン(骨組み)スクリプトを変更し,独自の起動スクリプトを作成する例を挙げよう。

リスト7■Apache自動起動スクリプトのドラフト
別ウィンドウで見る or list07.txt

 ここで挙げたスクリプト(リスト7)は,すでに「start/stop/restart/status」を処理する手順が組み込まれている。このため実際に起動するプログラム名に変更するだけで利用することができる。このファイルを/etc/rc.d/init.d ディレクトリに「skel」というファイル名で保存しておくと,今後必要な場合にすぐに利用可能だ。実際に自動起動設定を行うには,このファイルを「httpd」というファイル名でコピーしよう。次の通りだ。

root@noname:/etc/rc.d/init.d# cp skel httpd

 作成したら,「start)」の条件の中にある次の記述内容を変更する。

変更前
daemon skelton
touch /var/lock/subsys/skelton

変更後
daemon /usr/local/apache/bin/httpd
touch /var/lock/subsys/httpd

 もちろんApacheのインストール先ディレクトリが異なる場合は反映する必要がある。

 また,同じように「stop)」の中にある。

変更前
killproc skelton rm -f /var/lock/subsys/skelton

変更後
killproc httpd rm -f /var/lock/subsys/httpd

 以上の変更によって「httpd」スクリプトが「start/stop」の引数を受け付けることができる。実際に動作させてみよう。まずstartしてみてから,起動されたのを確認しstopする。表示結果は次のようになるはずだ。

リスト8■httpdサービスの起動・終了テスト表示例
別ウィンドウで見る or list08.txt

 確認できたら,次にスクリプト内の「status)」に見られる行を次のように変更しよう。

変更前
status skelton

変更後
status httpd

 このように変更をすると,startした後にstatusを引き数に実行した場合,現在実行しているプロセスIDが表示されるようになる。

リスト9■プロセスID表示
別ウィンドウで見る or list09.txt

 以上の手順でひと通りのスクリプトの機能が揃ったことになる。あとはコマンドの実行時に表示される「Starting skelton:」などの文字を,すべて「Starting httpd:」と変更して完了である。最終的に完成したApacheの自動起動スクリプトは以下のようになる。

リスト10■Apache自動起動スクリプト
別ウィンドウで見る or list10.txt

 実際に起動時に自動的に実行されるように設定してみよう。ランレベルの項目で解説したように,起動する際にはランレベル 3 か 5 が選択されるので,そのランレベルで自動的に実行されるように設定する。

 ランレベルごとに実行されるスクリプトは,ランレベル別に「/etc/rc.d/rc?.d」というディレクトリにある(ランレベル 3 の場合は rc3.d ディレクトリ)。そのディレクトリの中から,init.dディレクトリに作成したスクリプトへのリンクを作成する。

リスト11
別ウィンドウで見る or list11.txt

「S48httpd」というリンク名は,「48番目に start する httpd のためのスクリプト」という意味だ。詳しくは前述したランレベルの説明を参照してほしい。この番号は,相互に依存関係があるような場合には重要な意味を持つ(PCMCIA がスタートしていないのに PC カードのネットワークの設定はできないなど,システムにより密着したサービスの順に起動する傾向がある)。

 また,X を利用したグラフィカルなログイン画面を利用している場合には,ランレベル5についても同じことを行う。これで起動時にApacheが自動起動するようになっているはずだ。

PREV 11/12 NEXT