タイムアウト後のシステムワンショットサービスの終了

タイムアウト後のシステムワンショットサービスの終了

タイムアウト後にワンタイムサービスを終了できますか?

サービスがタイマーによって定期的にトリガーされるとしましょう。サービスの完了には通常3秒かかります。しかし、あなたのサービスに欠陥があり、時には無限ループで実行されます。復元サービスはあなたの手の届かないところにあります。だからあなたが望むのは、タイムアウト後にサービスを終了することです。

私達はシミュレートできますSUVサービスは次のとおりです。

[Unit]

[Service]
Type=oneshot
ExecStart=/bin/bash -c 'while true; do echo x; sleep 1; done'

[Install]
WantedBy=default.target

マニュアルページを読むと、TimeoutStopSec有望に見えるオプションのみが見つかります。次へ追加

TimeoutStopSec=10s

しかし、[Service]数分経ってもサービスはまったく終了しません。

ベストアンサー1

マニュアルページには次のようsystemd.serviceに記載されています。

TimeoutStartSec=開始を待つ時間を設定します。デーモンサービスが設定された時間内に開始完了信号を送信しない場合、サービスは失敗したとみなされ、再び終了します。単位なしの秒単位値または「5min 20s」などの時間範囲値を使用します。タイムアウトロジックを無効にするには、「無限大」を渡します。 Type = oneshotを使用しない限り、管理者構成ファイルのデフォルト値はDefaultTimeoutStartSec =です。この場合、タイムアウトはデフォルトで無効になります(systemd-system.conf(5)を参照)。

最後の文章のせいで混乱しています。だからといって再び活性化できないという意味ではありませんTimeoutStartSec。解決策は簡単です。追加するだけです。TimeoutStartSec=10s

おすすめ記事