systemd
サービス定義でpython
定義されている無条件シャットダウン時にスクリプトを再起動する単純なサービスユニットがあります。スクリプトが何らかの方法で中断されても、ユニットファイルで変数を有効にして再起動できることRestart=always
を確実にしたいと思います。WatchdogSec=
私の質問はシステムロギングに関する公式文書明確に説明されていません。
同じページを引用すると、
WatchdogSec=
サービスの監視タイムアウトを設定します。起動が完了すると、ウォッチドッグが有効になります。このサービスは
sd_notify(3)
定期的に呼び出す必要があります"WATCHDOG=1"
(たとえば、「keep-alive ping」)。
不明な部分は、提供する独自にウォッチドッグサービス(または)実行しているアプリケーション(私の場合はPythonスクリプト)のpingを維持し、言及した環境変数を更新してpingを維持する必要があります。
私の簡単なサービス定義
[Unit]
Description=dev-Status: Computes RF device availability status
[Service]
Type=simple
EnvironmentFile=/etc/sysconfig/db_EndPoint
ExecStart=/usr/bin/python /opt/foobar/foobar.py
RestartSec=10
Restart=always
[Install]
WantedBy=default.target
もしそうなら、このサービスファイルに次の行を追加すると、スクリプトは自動的に再起動されますか?
WatchdogSec=30s
答え1
ウォッチドッグを「ビット」またはpingするには、Pythonを使用できます。システム通知を送信するパッケージ:
from systemd.daemon import notify, Notification
notify(Notification.WATCHDOG)