自作のデーモンを systemctl で管理するための最小構成。
ユニットファイル
/etc/systemd/system/myapp.service:
[Unit]
Description=My App Server
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=myapp
WorkingDirectory=/opt/myapp
ExecStart=/opt/myapp/bin/server --port 8080
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
セクションの役割
- Unit — 依存関係と起動順序。
Afterは順序のみ、Wantsは依存も表す - Service — 実行方法。フォアグラウンドで動くプロセスは
Type=simple - Install —
systemctl enableしたときにどのターゲットへ紐づくか
運用コマンド
sudo systemctl daemon-reload # ユニットファイル編集後に必須
sudo systemctl enable --now myapp
systemctl status myapp
journalctl -u myapp -f # ログ追尾
daemon-reloadを忘れて「編集が反映されない」と悩むのが定番のハマりどころ。
Naxii の置き場