systemdリスタートポリシー

systemdのすべてのリスタートポリシーを理解します:no、on-success、on-failure、on-abnormal、on-watchdog、on-abort、always。各ポリシーがトリガーされる終了条件について学びます。

Advanced Configurations

詳細な説明

適切なリスタートポリシーの選択

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サーバー、バックグラウンドワーカー、バッチジョブ、監視エージェントなど、異なる信頼性と復旧要件を持つさまざまなタイプのサービスに最適なリスタートポリシーを選択する場合に使用します。

試してみる — Systemd Unit File Generator

フルツールを開く