update-rc.d はシリアル番号を無視します。

update-rc.d はシリアル番号を無視します。

マシンの起動後にemacsデーモンが起動するようにシステムを設定しようとしています。実行したいコマンドで/etc/init.dファイルを生成しましたが、update-rc.dを実行したときに指定したシリアル番号は無視されます。

[host /etc/init.d]$ sudo update-rc.d -n emacs defaults 10 02
insserv: enable service ../init.d/emacs -> /etc/init.d/../rc0.d/K01emacs
insserv: enable service ../init.d/emacs -> /etc/init.d/../rc1.d/K01emacs
insserv: enable service ../init.d/emacs -> /etc/init.d/../rc2.d/S02emacs
insserv: enable service ../init.d/emacs -> /etc/init.d/../rc3.d/S02emacs
insserv: enable service ../init.d/emacs -> /etc/init.d/../rc4.d/S02emacs
insserv: enable service ../init.d/emacs -> /etc/init.d/../rc5.d/S02emacs
insserv: enable service ../init.d/emacs -> /etc/init.d/../rc6.d/K01emacs
insserv: dryrun, not creating .depend.boot, .depend.start, and .depend.stop
[host /etc/init.d]$ 

コマンドの最後の2つのパラメータがなぜ無視されるのか、そして開始シーケンス番号をそのように低い値に設定したという事実を無視できるのは混乱しています。

答え1

update-rc.d defaults他のパラメータは処理されず、initスクリプトの情報を使用します。LSBヘッダ使用する優先順位(シーケンス番号)を決定し、サービスを開始および停止するランレベルを決定します。

スクリプトがそれに依存している場合は、$local_fs低いシーケンス番号で終わるのが一般的です。見てみると/etc/rc2.d、低いシーケンス番号の開始リンクがたくさん表示されます。スクリプトが独自の実行レベルを指定しない場合、デフォルト値が使用されます。つまり、レベル 2-5 から始まり、レベル 0、1、6 で停止します。独自の値を定義するには、通常、次のヘッダーを使用します。

### BEGIN INIT INFO
# Provides: emacs
# Required-Start: $local_fs $network $remote_fs
# Required-Stop: $local_fs $network $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop the Emacs daemon
### END INIT INFO

(必要に応じてさまざまな値を調整します)。

またupdate-rc.d enable、それぞれを使用して、update-rc.d disable特定のランレベルでスクリプトを有効または無効にすることもできます(例えば update-rc.d emacs disable 3)。

関連情報