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= で指定する。