shellとかコマンドとかをサービス化するやつ
これも忘れがちだからメモ
この記事は必要に応じて調べながら修正していく。
やり方
sudo
して/etc/systemd/system/
にサービス名.serviceを作る。
各セクションの説明はsystemd サービスユニット覚書のほうが詳しく載ってる。
Unit
サービスの説明
項目 | 説明 |
---|---|
Description | 説明 |
After | 前提サービス※ |
Before | このサービスより前に起動するべきサービス |
※ディレクトリのマウントを待つことも可能。/home/min06s/hoge
を待つならhome-min06s-hoge.mount
と書く
Servise
サービス自体の設定
項目 | 説明 |
---|---|
ExecStart | 実行コマンド |
Restart | Restartオプション |
Type | サービスタイプ |
Install
サービスのenable/disableに対するオプション
オプション | 説明 |
---|---|
WantedBy | enable時にこのUnitの.wantsディレクトリにリンクを作成する |
RequiredBy | enable時にこのUnitの.requiredディレクトリにリンクを作成する |
Also | enable/disable時に同時にenable/disableするUnit |
Alias | enable時にこのUnitの別名を用意 |
参考:http://enakai00.hatenablog.com/entry/20130917/1379374797
例
とりあえず適当に使いたいときはExecStart
らへんをちゃんとしておけばok
[Unit]
Description = example
After=network-online.target
ConditionPathExists=/home/user/script
[Service]
ExecStart=/home/user/script/ping.sh
Restart=no
Type=simple
[Install]
WantedBy=multi-user.target
Restartについて
結構細かい設定が可能。
オプション | 説明 |
---|---|
no | プロセスが終了してもプロセスを再起動しません。 |
on-success | プロセスが正常終了したときにプロセスを再起動します。ただし正常終了とは終了コードが 0 のときや SIGHUP, SIGINT, SIGTERM, SIGPIPE のシグナルで終了した場合のことです。 |
on-failure | プロセスが異常終了したときにプロセスを再起動します。ただし異常終了とは終了コードが 0 以外のときやコアダンプなどの上記4つ以外のシグナルで終了した場合などのことです。 |
on-abnormal | on-failure と似ていますが、終了コードによるプロセスの再起動はしません。 |
on-abort | プロセスが上記4つ以外のシグナルで終了したときにプロセスを再起動します。 |
on-watchdog | watchdogがタイムアウトしたときにプロセスを再起動します。 |
有効化
$ sudo nano /etc/systemd/system/ping.service
$ sudo chown root:root /etc/systemd/system/ping.service
$ sudo chmod 644 /etc/systemd/system/ping.service
$ sudo systemctl daemon-reload
$ sudo systemctl enable ping.service
$ sudo systemctl start ping.service