systemctl + Restart = alwaysとはどういう意味ですか?

systemctl + Restart = alwaysとはどういう意味ですか?

サービスを設定しました - calc_mem.service

次のように

Restart=on-failure
RestartSec=5
StartLimitInterval=400
StartLimitBurst=3

私の理解によると、上記の設定は次のことを行う必要があります。

エラーが原因でサービスが終了すると、サービスは3回の再試行を持ちます。

サービスは開始する前に5秒待ちます。

また、「再起動」が次のようになる可能性があることがわかりました。

Restart=always

障害が発生した場合はサービスを再起動する必要があることは理解できますが、これはどういう意味ですか Restart=always

この場合は、以下を設定する必要があります。 Restart=always

ベストアンサー1

これsystemd.serviceマニュアルページ値の説明Restart=と再起動を引き起こすオプションの表があります。Alwaysキャップの指示に従ってください。

に設定するとalways正常に終了したり、信号によって異常終了したり、タイムアウトしてもサービスを再開します。

この機能についての人々の考えはよくわかりませんが、たとえば、サービスが一定期間だけ実行されるか、または一定数の要求を処理し、可能なリソースを避けるために停止するように構成されているとします。漏れ。 systemdに再起動させると、サービス自体の実装がより明確になります。

ある意味、私たちは理由を尋ねることができます。いいえsystemdにこのオプションを含めます。障害発生時にサービスを再起動する機能があるため、サービスを再起動するオプションも含まれる場合があります。いつも、誰かが必要な場合に備えて。ポリシーではなくツールを提供してください。

さらに、「成功した終了」は、ここでかなり広く定義されている。

に設定すると、on-successサービスプロセスが完全に終了した場合にのみ再起動されます。この場合、クリーンな終了は終了コード0またはsignal、、、SIGHUPまたはいずれかを意味します。SIGINTSIGTERMSIGPIPE[...]

SIGHUPプロセスの再起動を要求する一般的な方法ですが、処理されずにプロセスが終了します。したがって、Restart=alwaysサービス自体がサポートしていない場合でも(または)を使用して再起動できます。Restart=on-successSIGHUP

alwaysまた、マニュアルページを読む限り、制限を無視して設定するわけではありません。StartLimitIntervalStartLimitBurst

StartLimitIntervalSec=サービスの再起動には、デバイスの起動速度制限が適用され設定されますStartLimitBurst=。詳細については、systemd.unit(5)を参照してください。再起動されたサービスは、開始制限に達した後にのみ障害状態になります。

おすすめ記事