TIPS/Linux/chkconfigとupdate-rc.d

Last-modified: 2007-05-26 (土) 14:47:49

1. RedHat 系の場合

Redhat 系の場合は,chkconfig コマンドを使います.
chkconfig は,/etc/rc.d/rcランレベル.d の下に,S や K で始まる,起動スクリプトへのシンボリックリンクを作成してくれます.

まず,donothing サービスを登録するには,以下を実行します.

 # chkconfig --add donothing

実行すると,ランレベル 2,3,4,5 に S で始まるシンボリックリンクが,ランレベル 0,1,6 に K で始まるシンボリックリンクが作成されます.

 # ls /etc/rc.d/rc?.d/[SK]??donothing
 /etc/rc.d/rc0.d/K91donothing@  /etc/rc.d/rc4.d/S91donothing@
 /etc/rc.d/rc1.d/K91donothing@  /etc/rc.d/rc5.d/S91donothing@
 /etc/rc.d/rc2.d/S91donothing@  /etc/rc.d/rc6.d/K91donothing@
 /etc/rc.d/rc3.d/S91donothing@

登録を抹消するには,以下を実行します.

 # chkconfig --del donothing

すると,上記のシンボリックリンクがなくなります.

また,今どうなってるのかな,と思ったら, --list オプションで確認することができます.

 # chkconfig --list donothing
 donothing     0:off  1:off  2:on   3:on   4:on   5:on   6:off

上記の場合,ランレベル 2,3,4,5 が on なので,登録されていますね.

さて,ランレベル 2,3,4,5 とか,91 とかは,どこから情報を得ているのでしょうか.
実は,起動スクリプトの中にあります.
/etc/init.d/donothing の場合,先頭に

 #!/bin/sh
 # chkconfig: 2345 91 91
 # description: test script.

というコメントがありますが,chkconfig コマンドは,このコメントを解釈して,処理をしてくれます.
書式は,以下の通りです.

 # chkconfig: 起動のランレベル 起動の優先順位 停止の優先順位
 # description: このサービスの概要

起動のランレベルが「2345」となっていますので,ランレベル 2,3,4,5 で S のスクリプトが,それ以外の 0,1,6 で K のスクリプトが作成されます.
S や K の後の数字は「優先順位」と呼ばれているようです.
それぞれの優先順位が「91」となっていますので,S や K の後の数字が, 91 になるわけですね.

2. Debian 系の場合

Debian 系の場合は,update-rc.d コマンドを使って登録します.
chkconfig とは違い,ランレベルや優先順位を,明示的に指定する必要があります.(指定しなければ,デフォルト値が用いられます.)

chkconfig のときと同様に登録する場合は,以下のように実行します.

 # update-rc.d donothing defaults 91

実行すると,ランレベル 2,3,4,5 に S91donothing が,ランレベル 0,1,6 に K91donothing が作成されます.
(ちなみに,91 を省略すると,デフォルトの 20 が用いられます.)

ランレベル 2,3,4,5 で起動,というのはデフォルトです.
ランレベルを明示的に指定するなら,以下のように実行します.

 # update-rc.d donothing start 91 2 3 4 5 . stop 91 0 1 6 .

逆に,登録を抹消するには,以下のように実行します.

 # update-rc.d -f donothing remove

実行すると,S??donothing と K??donothing がなくなります.

いずれも,-n オプションをつけて実行すると,実際の作業自体は行われません.ですので,まず -n オプションをつけて実行し,問題なさそうであれば,本番に挑むのがよろしいのではないかと思います.