2017-06-08 5 views
0

私は/etc/init.dスクリプトを使ってデーモンを起動します。 WheezyとTrustyでは、たとえデーモンが異常な理由(kill、seg faultなど)で実行を停止したとしても、私はinvoke-rc.dデーモンstart(またはサービスデーモンstart)からやり直すことができます。また、invoke-rc.dデーモンの状態はゼロ以外の値で返されます(デーモンの状態を10秒ごとにチェックし、実行していない場合は再起動するスクリプトで使用しました)。デーモンが強制終了されたときにXenialのinvoke-rc.dが機能しない

デーモンがkillされた場合、invoke-rc.dデーモンのstartは動作せず、-rc.dが呼び出されます。デーモンのステータスによれば、デーモンはまだ実行中です(0で終了)。

私はsystemdがinitファイルを処理できることは知っていますが、このコーナーケースは正しく処理されていないようです。

systemdでは、このケースをSuccessExitStatus = exit_codeでカバーできますが、SystemdがTrustyからのinitスクリプトを使用している場合はカバーできません。

私の初期化ファイルをどのように変更できるかについては、Xenialでそのケースをカバーしています(私は両方のバージョンの管理を避けるためにsystemdファイルを作成したくありません)。

答えて

0

systemd .serviceファイルを作成したくないと聞きましたが、これは、従来のSysV initスクリプトを管理するためにsystemdを使用するよりも速い可能性があります。あなたがすぐに発見したように、インダイレクションの余分な層は、バグの複雑さと潜在的可能性を追加します。

あなたが問題を引き起こす可能性があることを確認しようとしているinit.dスクリプトが表示されていない場合、問題の内容をすぐには分かりません。

追加のバージョンを維持する時間に関しては、サービスは実際に非常に基本的なものが時間の経過と共に変化しない限り、ファイルを変更する必要はありません。したがって、追加のメンテナンス時間はゼロに近くなければなりません。

.serviceファイルを設定するためにチェックする重要なドキュメントは、man systemd.service,man systemd.unit、おそらくman systemd.execです。しかし、最も簡単な解決策は、同等のサービスからファイル.serviceをコピー/貼り付け/変更することだけです。

関連する問題