自作スクリプトを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で様子を見るのが安全。