🐧 Linux 総合学習プラットフォーム

再起動したらサービスが上がっていない(systemctl enable 忘れ)

症状(よく出るエラー)

セットアップ時は systemctl start で動いていたのに、サーバーを再起動したらサービスが停止したまま。systemctl status myapp を見ると Active: inactive (dead) で、Loaded: 行に disabled と書かれている。

原因

systemd では「今すぐ動かす start」と「起動時に自動で上げる enable」が完全に別の操作になっている。enable は起動ターゲットからユニットへのシンボリックリンクを張る操作で、これをしていないサービスは再起動後に誰からも呼ばれない。手動 start で動作確認して満足してしまい、enable を打たないまま初回の再起動を迎える、というのが典型パターン。

直し方

sudo systemctl enable --now myapp を実行すれば、自動起動の登録と即時起動を一度に行える。設定されたかは systemctl is-enabled myapp が enabled を返すことで確認する。既に動いているサービスの点検には systemctl list-unit-files --state=disabled で無効のままのユニットを洗い出すとよい。

▶ 学習アプリでしっかり学ぶ