
マシンの起動後に 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
低いシーケンス番号の start リンクがかなりあることがわかります。スクリプトが独自の実行レベルを指定しない場合は、デフォルトが使用されます。レベル 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
)。