Debian WheezyのLSB Initスクリプトで奇妙な動作が発生しました。次の例で問題を示すことができます。
スクリプトは実行レベルで/etc/init.d/resolvconf
開始して停止しますS
。0
6
# Default-Start: S
# Default-Stop: 0 6
実際にchkconfig resolvconf on
スクリプトを開くと、各ランレベルディレクトリにシンボリックリンクが作成されていることがわかります。
$ ls /etc/rc?.d/*resolvconf
/etc/rc0.d/K02resolvconf
/etc/rc6.d/K02resolvconf
/etc/rcS.d/S13resolvconf
終了スクリプトを使用すると、chkconfig resolvconf off
シンボリックリンクが消えます。今まではそんなに良くなった。
私はスクリプトを起動しないことにしましたがS
(手動で始めます)、まだrunlevelでスクリプトを停止したいと思います0
。6
これによりデフォルトの起動を変更しました。
# Default-Start:
# Default-Stop: 0 6
そしてスクリプトを開きますchkconfig resolvconf on
。しかし、何も起こりませんでした。
$ ls /etc/rc?.d/*resolvconf
ls: cannot access /etc/rc?.d/*resolvconf: No such file or directory
シンボリックリンクは生成されず、スクリプトは実行レベル0
で実行されません6
。
ここで何が起こっているのでしょうか?
ランレベルでのみスクリプトが0
実行(停止)6
され、ランレベルで起動しないようにするにはどうすればよいですかS
?
修正する
@Rui F Ribeiroが提案したように、その行を完全に削除しました# Default-Start:
。今実行すると、chkconfig resolvconf on
次のエラーが発生します。
insserv: Script resolvconf is broken: incomplete LSB comment.
insserv: missing `Default-Start:' entry: please add even if empty.
insserv: Default-Start undefined, assuming empty start runlevel(s) for script `resolvconf'
ただし、シンボリックリンクが生成されます。
$ ls /etc/rc?.d/*resolvconf
/etc/rc0.d/K02resolvconf
/etc/rc6.d/K02resolvconf
しかし、なぜこれらのエラーが発生するのですか?
ベストアンサー1
chkconfig
「基本開始」行だけを読んでください。スクリプトのランレベルを計算するとき。ランレベル数を計算し、呼び出し数のみを計算します。insserv
1つ以上のランレベルが要求された場合「基本スタート」で...
この動作を防ぐための回避策は次のとおりです。
- サービスの有効化
chkconfig -a
: - サービスの無効
chkconfig -d
化 - 自分で
insserv
有効にしinsserv service
てservice
削除insserv -r service
してください。