web-dev-qa-db-ja.com

このinitスクリプトは、依存関係なしでどのように開始できますか?

私はいくつかのlsbinitスクリプトに取り組んでいます。そのうちの1つからの初期化情報は次のとおりです。

### BEGIN INIT INFO
# Provides:     myscript
# Required-Start:   networking myotherscript
# Required-Stop:    networking myotherscript
# Default-Start:    2 3 4 5
# Default-Stop:     0 1 6
# Short-Description:    Starts my daemon
### END INIT INFO

そしてmyotherscriptからの初期化情報

### BEGIN INIT INFO
# Provides:     myotherscript
# Required-Start:   networking
# Required-Stop:    networking
# Default-Start:    2 3 4 5
# Default-Stop:     0 1 6
# Short-Description:    Starts my other daemon
### END INIT INFO

私が正しく理解していれば、myotherscriptが実行されていない限り、service myscript startの実行は機能しないはずです。ただし、service myscript startの実行は実際に機能します。

少なくとも、満たされていない依存関係についてエラーが発生しないのはなぜですか?

3
Cameron Ball

service コマンドは、指定された引数を使用してinitスクリプトを実行する以上のことは行いません。特に、依存関係は処理しません。

Fedora/RHEL/CentOSおよびDebian/Ubuntu/Mint(およびおそらく他の)では、コメントに記録された依存関係は、サービススクリプト管理ユーティリティによってのみ考慮されます chkconfig 。スクリプトを直接呼び出す場合、これらは考慮されません。スクリプトを直接呼び出す場合は、直接介入し、操作するサービスを細かく制御する必要があるという考えです(たとえば、ローカルで実行している場合があります)。 -依存関係のインストール済みバージョン、または仮想化環境の別のゲストで実行している可能性があります)。これは [〜#〜] lsb [〜#〜] に準拠しており、ディストリビューションと管理者の間ではなく、アプリケーションとディストリビューションの間のインターフェースのみを指定します。

依存関係の組み込みサポートの欠如は、Systemdを支持して徐々に段階的に廃止されているSysVinitの欠陥の1つです。