頻繁にシャットダウンするコンピュータ(クラシックデスクトップ設定など)のタイマーデバイスを作成する必要があります。このタイマーデバイスは定期的に有効にする必要がありますが、あまりにも頻繁に(たとえば、毎週、毎月)有効にしてはいけません。
私はいくつかの方法を見つけましたが、それらのどれも適切ではありません。
マニュアルページによると、設定された時点が過去の場合と
OnBootSec
ディレクティブのみがアクティブになります。また、定期的なイベントを定義するためにこれらの組み合わせを使用するOnStartupSec
いくつかの例もありました。OnActiveSec
問題は、マシンが起動するたびにタイマーが設定されたデバイスをアクティブにすることです。 1週間/月に1回実行するようになっているタイマーがある場合は、あまりにも頻繁に実行されます。例:私のログを1日3回回転させたくありません!ソリューションと
OnCalendar
ガイドライン。設定された特定の時点(主に真夜中、時間指定から時間を省略した場合、デフォルトは00:00:00)でマシンの電源が切れると、次の起動後にタイマーはアクティブになりません。少なくともそれが私が得たものです。そうなんですか?
設定した時間が過去の場合、次回の起動後にカレンダーイベントを含むタイマーはすぐに有効になりますか?それ以外の場合、この動作を実行するための回避策はありますか?
ベストアンサー1
この機能はすでに実装systemdで使用されている(バージョン> = 212)Persistent=
ディレクティブを使用してジョブを実行する日時を設定するときは、単位ファイルを挿入するだけですPersistent=true
。OnCalendar=
耐久性=
ブールパラメータを使用します。 trueの場合、サービスユニットが最後にトリガされた時間がディスクに保存されます。タイマーが有効になると、タイマーが無効になっている間にサービスデバイスが1回以上トリガされた場合、サービスデバイスはすぐにトリガされます。これは、システムのシャットダウン時に失われたサービスの実行を補うのに役立ちます。この設定は、OnCalendar =で設定されたタイマーにのみ有効です。