systemdサービスが起動しない時の典型エラー集|原因別の調査手順と対処法

  • URLをコピーしました!

systemd管理のLinuxサーバーで、

  • サービスが起動しない
  • activeにならない
  • すぐ落ちる

といったトラブルは非常によく発生します

本記事では、現場で実際によく見る典型エラー文言をベースに、

  • 原因
  • 確認コマンド
  • 具体的な対処方法

をセットで解説します。

目次

まず最初に必ずやる確認

systemctl status サービス名

ここに9割のヒントが書いてあります。

さらに詳細を見る場合:

journalctl -u サービス名 -xe

典型エラー① Unit not found

エラー例

Unit myapp.service could not be found.

原因

  • serviceファイルが存在しない
  • 配置ディレクトリが違う

確認

ls /etc/systemd/system/
ls /usr/lib/systemd/system/

対処

systemctl daemon-reload

※ serviceファイル追加・修正後は必須

典型エラー② Failed at step EXEC

エラー例

Failed at step EXEC spawning /usr/local/bin/myapp

原因

  • ExecStartのパス誤り
  • 実行権限がない

確認

ls -l /usr/local/bin/myapp

対処

chmod +x /usr/local/bin/myapp

またはExecStartのパス修正。

典型エラー③ code=exited, status=1/FAILURE

エラー例

Main process exited, code=exited, status=1/FAILURE

原因

  • アプリ自体が起動失敗
  • 設定ファイルエラー

調査方法

journalctl -u サービス名 --no-pager

systemdではなくアプリのログを見ることが重要です。

典型エラー④ Permission denied

エラー例

Permission denied

原因

  • User指定ユーザーの権限不足
  • SELinux

確認

getenforce

一時切り分け

setenforce 0

※ 本番ではポリシー修正が正解

典型エラー⑤ Start request repeated too quickly

エラー例

Start request repeated too quickly.

原因

  • 起動直後に即終了を繰り返している

確認

systemctl status サービス名

対処

  • ExecStartを直接実行して確認
/usr/local/bin/myapp

典型エラー⑥ Dependency failed

エラー例

Dependency failed for My Service.

原因

  • Requires / After の依存関係失敗

確認

systemctl list-dependencies サービス名

対処

  • 依存サービスの起動
  • Unit定義見直し

典型エラー⑦ Type指定ミス

よくある例

Type=simple

デーモン化するアプリでは不適切な場合があります。

症状

  • 起動した直後にinactive

対処

Type=forking

アプリ仕様に合わせること。

systemdトラブル時の鉄板チェックリスト

  • systemctl status は確認したか
  • journalctl を見たか
  • ExecStartを手動実行したか
  • daemon-reloadを忘れていないか
  • SELinuxを疑ったか

まとめ

systemdサービスが起動しない原因の大半は以下です。

  • ExecStartミス
  • 権限不足
  • 設定ファイルエラー
  • 依存関係

エラー文言を正しく読み、 systemdの責任かアプリの責任かを切り分けることで、 復旧時間は大幅に短縮できます。

目次