これ以上出力が生成されない場合は、systemd サービスを再起動してください。

これ以上出力が生成されない場合は、systemd サービスを再起動してください。

事前定義された時間内に出力が生成されない場合は、systemdサービスを再起動できますか?

明らかにハングするスクリプトがありますが、systemd(またはこの場合はPython)はそれを検出できないため、失敗状態にはなりません。

ただし、出力ロギングは停止されるため、1分間出力がない場合はサービスを再起動できます。 systemdを使用してこれを達成できますか?

私の現在のシステムファイル:

[Unit]
Description=SOmething
After=network.target

[Service]
WorkingDirectory=/home/user/system/something
User=nobody
ExecStart=/usr/bin/python2 something.py
Restart=on-watchdog
RestartSec=10s

[Install]
WantedBy=multi-user.target

ベストアンサー1

私はsystemdが少なくともこれを行うことができるとは思わない。systemd.service(5)マニュアルページにはそのような内容が記載されていないようです。

しかし、あなたができることは、systemdに組み込まれたウォッチドッグを使用することです。

WatchdogSec=定期的にサービスを設定して送信することでWATCHDOG=1これを行うことができますsd_notify。これを設定した場合、WatchdogSec=30サービスは少なくとも30秒ごとにsystemdに通知する必要があります。

サービスが中断されると、systemdに通知されなくなり、systemdはそれに応じてサービスを終了します。

restart=on-watchdog(すでに持っていますが、それなしでは何もできません)を使用すると、監視者WatchdogSec=によってサービスが終了した後、systemdはサービスを再起動します。

おすすめ記事