systemd の .service ファイルの書き方
/usr/sbin/mydaemon の .service ファイルを書きたい場合。 mydaemon は fork せず 、 foreground で動作するものとする。
/etc/systemd/system/mydaemon.service:
[Unit]
Description=my daemon
[Service]
ExecStart=/usr/sbin/mydaemon
Restart=always
[Install]
WantedBy=multi-user.target
依存関係
[Unit] に Requires=, Before=, After= 辺りを追加する。
Requires は指定されたサービスも一緒に起動する。指定されたサービスが終了した時は自身も終了する。
Before, After は起動順序の制御。 Requires は起動順には関与しないので、通常はこれらも一緒に設定することになる。
細かいことは man systemd.unit 参照。
fork しちゃうヤツ
[Service] に Type=forking を追加。また、 PID ファイルの位置を PIDFile= で指定するとなお良い。
Daemon じゃなくて、コマンドを実行したいだけの時
[Service] に Type=oneshot を追加。また、 RemainAfterExit=yes を指定して自動で再起動してしまうのを防ぐ。
終了時にもコマンドを実行したい場合は ExecStop= で指定する。