15分ごとのsystemdタイマー


33

15分ごとに実行されるsystemdタイマーを作成しようとしています。今私は持っています:

  • timer-fifteen.timer

    [Unit]
    Description=15min timer
    
    [Timer]
    OnBootSec=0min
    OnCalendar=*:*:0,15,30,45
    Unit=timer-fifteen.target
    
    [Install]
    WantedBy=basic.target  
    
  • timer-fifteen.target

    [Unit]
    Description=15min Timer Target
    StopWhenUnneeded=yes
    

これは停止することなく何度も実行されます。*:0,15,30,45:*代わりにする必要がありますか?どうすればこの作品を作ることができますか?


2
あなたの構文は15 ごとではありませんか?
パベルシメルダ14

回答:


43

構文は15個ごとに変換されます 、あなたが15 ごとにしたい場合、IMOの最も読みやすい方法は次のとおりです:

OnCalendar=*:0/15

質問で使用するものに最も類似した答えは次のとおりです。

OnCalendar=*:0,15,30,45

詳しくは:


3
OnCalendar=0/8:00:00「8時間ごとに実行」と言うのは正しいですか?
シャクラ

4
はい。しかし、あなたはおそらくすでにそれをすでに知っています。:)
パベルシメルダ16年

しませんでしたが、とにかくそれを使いました。確認ありがとう!
シャクラ

OnCalendar=*:0/15OnCalendar=*:0,15,30,45正確に変換する必要があります(ドキュメントで正しく読んだ場合)。で8時間ごとに実現されOnUnitActiveSec=8hoursます。
デビルスキー

3
間隔を指定するときsystemd-analyze、たとえばtry の出力が役立つ場合がありますsystemd-analyze calendar *:0/15
セバスチャン

12

systemd.timeによると、設定

OnCalendar=*:0/15

に正確に変換します

OnCalendar=*:0,15,30,45

すなわち。ユニットを1時間ごとに、また過去4分の1、2分の1、4分の1に正確にアクティブにします。

サービスによっては、これはあなたが望むものでも、すべての場合に必要なものでもないかもしれません。

15分ごとに実行されるタイマーたとえば、1:02、1:17、1:32、1:47、2:02など)は、常に最後に実行された時間に応じて、systemdで実行できます。タイマー設定

OnUnitActiveSec=15min

また、ユニットを手動でアクティブにしたり、それを行う依存関係を持たせたい場合を除き、起動後しばらくしてユニットを起動する必要があるため、次のように指定する必要があります。

OnBootSec=10min
OnUnitActiveSec=15min

起動後10分でユニットを起動し、その後は最初の15分ごとに起動します。

さらに、OnUnitInactiveSecサービスが停止した後(または、より一般的には、ユニットが非アクティブになった後)に時間のカウントを開始する設定があります。


1
警告:OnUnitActiveSec かなり壊れているようです。
アンデルスカセオルグ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.