Kumo Notes

インフラ作業メモ · Tokyo

2026-02

サービスが落ちたときにすぐ戻ってほしくて RestartSec=1 とかにすると、 起動に失敗する設定を入れたときに再起動ループになります。 1 秒間隔で起動と失敗を繰り返すので、ログがみるみる埋まります。

[Service]
Restart=on-failure
RestartSec=10s
StartLimitIntervalSec=300
StartLimitBurst=5

StartLimitIntervalSec と StartLimitBurst を入れておくと、 一定回数失敗したところで諦めてくれます。諦めてくれたほうが、 ログを読みに行く余裕ができて助かります。

嵌まりどころ

これらの制限は [Unit] ではなく [Service] ではなく [Unit] 側に書く必要があります。バージョンによって扱いが変わった経緯があり、 古い記事のとおりに書くと効かないことがあります。

systemctl show -p RestartUSec -p StartLimitIntervalUSec unit で実際に効いている値を確認するのが確実です。

on-failure と always の違い

正常終了(exit 0)したときにも再起動したいなら always、 異常終了のときだけでいいなら on-failure です。 ワンショットの処理を always にすると延々と走り続けるので、 そこは用途で分けたほうがいいと思います。

← メモ一覧に戻る