systemdタイマー、停電後にサービスを再起動するには?

systemdタイマー、停電後にサービスを再起動するには?

私は毎朝7時にサービスを開始するためにシステムタイマーを試しています。このサービスは、午後10時まで継続的に実行する必要があるアプリケーションを起動します。したがって、アプリケーションがクラッシュした場合、サービスはアプリケーションを再起動する必要があります。 10時にcrontabによってサービスが停止し、システムもシャットダウンします。

OnCalendarとPertant = trueのタイマーを使用しており、タイマーは機能していますが、午前7時以降に電源が切れると(電源が復元された後にBIOSでシステムを再起動する)、タイマーが機能しているためサービスが開始されていることを確認できません。 Triggerの成功は午前7時に起き、翌日まで待たなければなりません..

システムが午前7時前に開始できる場合(夜間停電)、サービスも開始され、午前7時前に開始したくないため、起動時にサービスを実行できません。

どんなアイデアがありますか?

答え1

OnCalendarを介してタイマーが予約されていると仮定すると、欠落しているイベント以降のタイマーの最後の実行状態は何ですか?これは出力の最後の列ですsystemctl list-timers

「該当なし」と表示された場合、タイマーは以前にトリガーされたことがないか、最後の実行状態がクリアされたため、起動時には実行されません。

答え2

私が見つけた現在の解決策はthis..deleteです。切手ファイルがにあります~/.local/share/systemd/timers。その後、タイマーが再起動されます。

[ソース] [1] "各タイマーが最後に実行された時刻を示す長さが0のファイルです。削除すると、次にタイマーが起動したときに再構築されます。"

[1]:https://wiki.archlinux.org/index.php/Systemd/Timers

解決策を見つけたと思いましたが、午前7時以降に電源が切れると機能しないことに気づきました...

答え3

視聴する:

[Timer]
#Execute job if it missed a run due to machine being off
Persistent=true
#Run 120 seconds after boot for the first time
OnBootSec=120

関連情報