
2 つのサービス A と B を追加しました。B は A に依存しているため、B を起動すると、A がまだ実行されていない場合は自動的に起動するはずです。しかし、B を起動しても A は自動的に起動しません。
どこが間違っているか教えていただけますか? 両方のサービスの Init スクリプトについては以下に記載しました。
upstart と systemd は使いたくありません。init スクリプト (LSB) を使用してこれを実装したいです。
B 初期化スクリプト:
#!/bin/bash
# Author: xxxx [email protected]
# chkconfig: 2345 95 05
# processname: B
# config: /usr/local/etc/rc.conf
# pidfile: /var/run/B.pid
### BEGIN INIT INFO
# Provides: B
# Required-Start: $local_fs $network A
# Required-Stop: $local_fs $network A
# Should-Start:
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop System daemon
# Description:
### END INIT INFO
初期化スクリプト:
#!/bin/bash
# Author: xxxx [email protected]
# chkconfig: 2345 90 10
# processname: A
# config: /usr/local/etc/rc.conf
# pidfile: /var/run/A.pid
### BEGIN INIT INFO
# Provides: A
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Should-Start:
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop System daemon
# Description:
### END INIT INFO
答え1
これは LSB 初期化スクリプトでは不可能です。 LSB 初期化スクリプト自体は依存関係を尊重しません。
このINIT INFO
コメント セクションは、依存関係が外部スクリプトによって解決され、ブート中に個々の init.d スクリプトを開始するために使用される依存関係ベースのブートの場合にのみ存在します。
したがって、現在の構成では、サービス A と B は起動時に正しい順序で開始されますが、一方の init スクリプトを手動で開始しても、もう一方の init スクリプトが自動的に開始されるわけではありません (すでに実行されているかどうかを知る手段すらありません)。
いくつかの情報依存関係ベースのブートDebian で。