🐧 Linux 総合学習プラットフォーム
中級 ・ systemd / サービス / 自動起動

自作スクリプトをsystemdサービス化する

手で起動していた自作の常駐スクリプトを、サーバ再起動後も自動で立ち上がり、落ちたら再起動される「ちゃんとしたサービス」にしたい。

手順

sudoedit /etc/systemd/system/myapp.serviceユニットファイルを新規作成する。[Unit]にDescription、[Service]にExecStart=/opt/myapp/run.sh と Restart=on-failure、[Install]にWantedBy=multi-user.target を書くのが最小構成。
sudo systemd-analyze verify /etc/systemd/system/myapp.service起動する前にユニットファイルの文法チェックを通す。typoによる「起動しない・原因不明」を事前に潰せる。
sudo systemctl daemon-reloadsystemdにユニットファイルの追加・変更を読み込ませる。ファイルを編集しただけでは反映されない。
sudo systemctl enable --now myapp.service自動起動の有効化(enable)と即時起動(start)を一度に行う。--nowが両方をまとめてくれる。
systemctl status myapp.serviceactive (running) になっているか、直近のログに異常が無いかを確認する。
journalctl -u myapp.service -fサービスの標準出力・標準エラーはjournalに集まる。-fで流しながらしばらく挙動を見届ける。
注意ExecStartは絶対パスで書くこと(PATH頼みは動かない定番原因)。またRestart=alwaysにすると設定ミスでも無限再起動ループになるため、まずはon-failureで様子を見るのが安全。

▶ 学習アプリで実務レシピを使う