memo

2011-05-11

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