LoginSignup
4
4

shellとかコマンドとかをサービス化(デーモン化)するやつ

Last updated at Posted at 2020-05-06

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がタイムアウトしたときにプロセスを再起動します。

参考:systemctlでプロセス自動再起動

有効化

$ 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
4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4