私はいくつかのlsb initスクリプトを作業しています。以下は、そのうちの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
私が正しく理解した場合、service myscript start
myotherscriptが実行されていない限り、実行は何の効果もありません。しかし、実行はservice myscript start
機能します。
少なくとも満たされていない依存関係のエラーが発生しないのはなぜですか?
答え1
これservice
このコマンドは、指定された引数を使用してinitスクリプトを実行する以上のことは行いません。特に依存関係を処理しません。
Fedora/RHEL/CentOS および Debian/Ubuntu/Mint (およびその他) でコメントに文書化された依存関係は、サービススクリプト管理ユーティリティでのみ考慮されます。chkconfig
。スクリプトを直接呼び出すことは考慮されません。これにより、直接介入して、運用中のサービスの詳細な制御が必要になります(たとえば、ローカルで実行されている可能性があります - インストールされている依存関係のバージョンなど)、または仮想化環境の他のゲストで実行されている可能性があります。これは次のように一致します。最下位ビットディストリビューションと管理者の間ではなく、アプリケーションとディストリビューションの間のインターフェイスのみを指定します。
依存関係の基本的なサポートが不足していることはSysVinitの欠陥の1つであり、Systemdによって徐々に段階的に廃止されています。