systemd ユニットファイルの最小構成

目次

自作のデーモンを 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
  • Installsystemctl enable したときにどのターゲットへ紐づくか

運用コマンド

sudo systemctl daemon-reload   # ユニットファイル編集後に必須
sudo systemctl enable --now myapp
systemctl status myapp
journalctl -u myapp -f         # ログ追尾

daemon-reload を忘れて「編集が反映されない」と悩むのが定番のハマりどころ。