ManjaroLinuxのsystemdに自前デーモンを追加する
How to add self pythonscript to Linux systemd?
今回は自前で作成したPythonスクリプトをManjaroLinuxのデーモンに登録してみました。
筆者はBitcoinのBitFlyerのAPI経由で先方のサーバに蹴られないレベルで数秒置きに
データを取得しています。
これまではcronに常時実行スクリプトを登録しておりましたが、
稀に落ちてしまうことがあります。
(おそらく回線の瞬断?やパケットロスやBitFlyerサーバのレスポンス異常などと推測)
そのため別の監視スクリプトで毎分落ちてないか確認していたのですけども、
このデーモンにすることでサービスが落ちても自動再実行されるようになりました。
というわけで、今回はその方法について記述していきます。
ファイルのパスは上記を見てわかるように、/etc/systemd/system/配下に、
getbf2sql.serviceという場所に格納されています。
この「getbf2sql.service」の中身は以下になります。
[Unit]
Description = get BitFlyer data to MySQL daemon
[Service]
ExecStart = /opt/getbf2sql.py
Restart = always
Type = simple
[Install]
WantedBy = multi-user.target
上記の中で実行したいファイルが「/opt/getbf2sql.py」となります。
ファイルを格納したら、以下コマンドでリストに出るか確認します。
$ sudo systemctl list-unit-files --type=service | grep getbf2sql
getbf2sql.service disabled disabled
出てきましたね、これを早速有効化します。
$ sudo systemctl enable getbf2sql
再度確認してみます、おっ!enabledになりました。
$ sudo systemctl list-unit-files --type=service | grep getbf2sql
getbf2sql.service enabled disabled
では開始してみましょう。
$ sudo systemctl start getbf2sql
● getbf2sql.service - get BitFlyer data to MySQL daemon
Loaded: loaded (/etc/systemd/system/getbf2sql.service; disabled; vendor preset: disabled)
Active: active (running) since Sun 2021-10-24 23:43:14 JST; 5min ago
Main PID: 70355 (getbf2sql.py)
Tasks: 1 (limit: 18963)
Memory: 17.5M
CPU: 7.088s
CGroup: /system.slice/getbf2sql.service
└─70355 /usr/bin/python3 /opt/getbf2sql.py
10月 24 23:43:14 tpx230-manjaro systemd[1]: Started get BitFlyer data to MySQL daemon.
これでバッチリ起動できました。
Memory、CPUの利用状況もわかるようになりますね。
尚、この方法はUbuntuでも可能です。
参考まで!