プログラムを実行したい。2019-08-14 13:00:00。
その後は4,096分ごとに実行されます。
わかりました/整数1分に1回繰り返すことができます。しかし、これを書くのは間違っています。
OnCalendar=2019-08-14 13:00/4096:00 UTC
4096分は許可されていないようです。エラー:2019-08-14 13:8/4096:00 UTCを無視してカレンダーの仕様を解析できません。
これを実装する方法を知っている人はいますか?
ベストアンサー1
systemdカレンダー仕様の構文は、/
評価中の特定のフィールドにのみ適用されます。これは、*
フィールドのすべての値を受け入れる構文と似ており、通常/1
フィールドの1単位ごとに繰り返されます。
これはcronと似ていますが、いくつかのcron実装では同様の構文/
(わずかに異なり、たとえばスペースが必要です5-59/8
)と*
構文も受け入れます。
出荷書類ビーチシステム時間(7)用語を一緒に言及し*
て使用してください。/
マッチ、これはこのフィールドにのみ制限があることを強く意味します。
日付と時刻の指定では、すべてのコンポーネントを "
*
"として指定できます。この場合、すべての値が一致します。あるいは、各コンポーネントをカンマ区切り値のリストとして指定することもできます。値には「」と繰り返し値の接尾辞を付けることができます/
。これは、値自体が値と繰り返し値のすべての倍数と一致することを示します。 ""で区切られた2つの値は、..
値の範囲を表すために使用でき、範囲の後には "/
"と繰り返し値が続くことがあります。
したがって、残念ながら、4096分ごとに繰り返される単一のカレンダー仕様を使用することは実際には不可能です。
1つのオプションは、別のタイマー単位設定を使用することです。OnUnitActiveSec=
、接続されているデバイスがアクティブになった後、特定の間隔でタイマーをトリガーします。タイマーを実行するとデバイスがアクティブになり、選択した間隔に応じて定期的に繰り返し実行されます。
これをカレンダーイベントと組み合わせて、最初にそのカレンダーイベントを実行してからルールを繰り返すことができますOnUnitActiveSec=
。マシンが再起動すると停止することがあります。この場合、ループをスクロールするにはデバイスを一度トリガーする必要があります。たとえば、OnBootSec=
再起動時に機能する別のオプションは次のとおりです。Persistent=
属性。 )