systemdリスタートポリシー
systemdのすべてのリスタートポリシーを理解します:no、on-success、on-failure、on-abnormal、on-watchdog、on-abort、always。各ポリシーがトリガーされる終了条件について学びます。
詳細な説明
適切なリスタートポリシーの選択
Restart=ディレクティブは、systemdがサービスを自動的に再起動するタイミングを制御します。各ポリシーはさまざまな終了条件に異なる対応をします。
サービスタイプ別の推奨ポリシー
Webサーバーと API: Restart=on-failure
クラッシュ時に再起動しますが、正常シャットダウン時には再起動しません。ほとんどのサービスの安全なデフォルトです。
重要インフラ: Restart=always
終了理由に関係なく常に再起動します。常に実行されている必要があるサービス(データベース、メッセージキュー、監視エージェント)に使用します。
バッチジョブ: Restart=no
サービスは一度実行され、停止したままです。oneshotタスクやマイグレーションスクリプトに適切です。
RestartSecとレート制限
RestartSec=は再起動の試行間に遅延を追加します。systemdにはビルトインのレート制限もあり、サービスがStartLimitIntervalSec内にStartLimitBurst回以上再起動した場合、サービスは失敗状態になります。
RestartPreventExitStatus
特定の終了コードを再起動のトリガーから除外できます:
Restart=on-failure
RestartPreventExitStatus=1 6 SIGTERM
プロセスがコード1、6で終了するか、SIGTERMで終了された場合を除き、障害時に再起動します。再起動しても修正されない設定エラーを示す特定の終了コードに有用です。
ユースケース
Webサーバー、バックグラウンドワーカー、バッチジョブ、監視エージェントなど、異なる信頼性と復旧要件を持つさまざまなタイプのサービスに最適なリスタートポリシーを選択する場合に使用します。