インフラ作業支援ラボInfra Support Lab ← ガイド一覧← 戻る

systemctl reset-failedの意味と使い方|failed状態・起動制限の確認

systemctl reset-failedはsystemdの失敗状態や起動制限のカウンターをリセットするための操作です。「実行すれば障害が直るのか」「いつ使うべきか」を区別し、原因確認から安全な再試行まで順に説明します。

このページの目的

reset-failedの対象・副作用を理解し、起動失敗の根本原因を残したまま状態だけ消す誤操作を避けます。

最初にやること

systemctl statusとjournalctl -uで最初の失敗を保存し、systemctl showで起動制限を確認します。原因を修正した後に限り、必要に応じてreset-failedを検討します。

このページの担当:reset-failedが行う状態・カウンターのリセットと再試行の判断です。アプリ本体・Unit設定の根本原因は起動失敗ガイドで確認してください。

Unitを再起動する前に確認

Unitの実行パス、Restart、起動制限など、再起動を繰り返す前に確認したい設定をレビューできます。

Unitをレビュー

systemctl reset-failedは何をする?

systemctl reset-failed example.serviceは指定したUnitのfailed状態を消去し、サービスの起動回数制限のカウンターや再起動カウンターをリセットします。サービスそのものを修復したり、設定ファイルを書き換えたり、停止中のサービスを自動的に起動したりするコマンドではありません。

systemctl is-failed example.service systemctl show example.service -p ActiveState -p SubState -p Result -p NRestarts

失敗状態を消しただけでは「アプリが正常稼働した」ことにはなりません。is-activeや実際のアプリケーション疎通を別途確認します。

いつ使う? Start request repeated too quicklyとの関係

状況判断
failedが残っている先に失敗理由と発生時刻を保存。監視上の見かけを整えるためだけなら実行理由を明確にする
Start request repeated too quicklyStartLimitIntervalSec・StartLimitBurstに達している可能性。最初の起動失敗を修正してから再試行する
Unitの構文ミスやExecStart先が存在しない先に設定・ファイル・権限を修正。reset-failedでは根本原因は直らない
実行中サービスが安定している通常、状態リセットのために追加操作する必要はない

短時間に何度も起動失敗した場合、systemdの起動回数制限によって再試行が拒否されることがあります。reset-failedは制限カウンターをリセットできますが、原因が残れば同じ障害を繰り返します。

実行前:最初の失敗と設定値を保存

systemctl status example.service --no-pager -l journalctl -u example.service -b --no-pager -n 100 systemctl cat example.service systemctl show example.service -p Restart -p NRestarts -p StartLimitIntervalUSec -p StartLimitBurst -p Result

システムのバージョンによって、systemctl showのプロパティ名や表示内容は異なることがあります。特にStartLimitIntervalUSecは、古い環境では確認方法が異なる場合があります。Unit定義と実際の状態を突き合わせてください。

再起動ループに注意:ログを確認せず何度もrestartすると、原因が見えにくくなったり、依存サービスに負荷を与えたりします。必要なら管理者と合意してサービスの自動再起動方針から確認してください。

操作手順と注意点

# 原因を修正した後、対象Unitだけをリセット sudo systemctl reset-failed example.service # 必要なら計画に沿って起動を再試行 sudo systemctl start example.service

reset-failedの対象Unitを省略すると、全Unitのfailed状態をリセットする動作になります。障害の証跡・監視への影響を避けるため、Unit名を指定するのが基本です。

systemctl daemon-reloadはUnitの構成変更を再読込する別操作です。Unitのファイルを編集した場合は適切なタイミングで再読込してください。reset-failedを代用にしないでください。

結果別の次の対応

確認結果次に実施すること
failedが消えてサービスはinactive状態リセットのみ成功。必要なら変更承認後に起動してアプリケーションの動作を確認
再試行直後に再びfailedjournalの最初のエラーを調査。設定・パス・権限・アプリログを修正する
起動制限が再発Restart=によるループ、StartLimitBurst、依存先の不調を再評価。無制限化は避ける
203/EXECが表示専用ガイドで実行ファイル・インタープリタ・権限を確認
起動成功でも機能しないアプリケーションのログ・ポート・依存先への接続・ヘルスチェックを確認

リセット後・修正後の再確認

systemctl is-failed example.service systemctl is-active example.service systemctl status example.service --no-pager -l journalctl -u example.service -b --no-pager -n 50

期待するActiveStateと実際のアプリ動作が一致するか確認します。失敗状態が消えたことだけを正常化とみなさず、業務リクエストが応答するか、監視アラートが回復しているか、一定時間の再発がないかまで確認します。

公式・一次資料