システムサービスで最大サービス期間を指定するには?

システムサービスで最大サービス期間を指定するには?

まれに、Type=simpleシステムサービスが中断したりループに閉じ込めたりする問題が発生しました。これにより、タイマーがサービスの予約を停止します。これは、サービスで確認されているように、sudo systemctl status myserviceサービスが長い時間前に終了する必要がある場合はまだ実行中であるためです。まだエラーを把握していませんが、問題ではありません。しかし、同時に今後の実行スケジュールを中断したくありません。

システムサービスファイルで強制終了される最大実行時間を指定する方法はありますか?

[Unit]
Description=scripts should run and exit but occasionally hangs or infinite loop      

[Service]
SyslogIdentifier=myservice
Environment='MYVAR=myvar'
User=deanresin
Type=simple
ExecStart=/usr/bin/python3 /home/deanresin/myscript

答え1

TimeoutStartSec使用すべきコメントで@muruが述べたように、終了する必要があるスクリプトを実行する正しい方法Type=oneshotType=simple

たとえば、スクリプトが通常10秒以内に実行される場合、構成は次のようになります。

[Service]
Type=oneshot
TimeoutStartSec=10
SyslogIdentifier=myservice
Environment='MYVAR=myvar'
User=deanresin
ExecStart=/usr/bin/python3 /home/deanresin/myscript

スクリプトの実行に10秒以上かかると、スクリプトが終了し、サービスが失敗したと表示されます。

関連情報