LSB 初期化サービス依存関係

LSB 初期化サービス依存関係

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 で。

関連情報