修正する

修正する

Debian WheezyのLSB Initスクリプトで奇妙な動作が発生しました。次の例で問題を示すことができます。

スクリプトは実行レベルで/etc/init.d/resolvconf開始して停止しますS06

# 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でスクリプトを停止したいと思います06これによりデフォルトの起動を変更しました。

# 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 serviceservice削除insserv -r serviceしてください。

おすすめ記事