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の責任かアプリの責任かを切り分けることで、 復旧時間は大幅に短縮できます。
あわせて読みたい


systemd サービスが自動起動しない/Enable されないときの原因と対処
Linux サーバーでは systemd によるサービスの自動起動設定が広く利用されています。しかし、意図したサービスが再起動後に自動で立ち上がらない、あるいは systemctl e…
あわせて読みたい


journalctl でログが見れない/permission denied になる場合の原因と解決方法
journalctl は systemd 環境で利用できるログ閲覧コマンドですが、一般ユーザーで実行すると以下のように Permission denied が表示されることがあります。 $ journalct…
あわせて読みたい


SELinux によってファイル操作が拒否されるときの対処方法
概要 Linux サーバーでファイルの作成・移動・読み書きを行おうとした際、次のようなエラーが出ることがあります。 Permission denied mv: cannot move ‘file’ to ‘/var…
