System-Timer alle 15 Minuten

33

Ich versuche, einen System-Timer zu erstellen, der alle 15 Minuten ausgeführt wird. Gerade habe ich:

  • 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
    

Dies läuft immer und immer wieder ohne anzuhalten. Muss es *:0,15,30,45:*stattdessen sein? Wie kann ich das schaffen?

Lily Hahn
quelle
2
Bedeutet Ihre Syntax nicht alle 15 Sekunden ?
Pavel Šimerda

Antworten:

43

Ihre Syntax wird alle 15 Sekunden übersetzt . Wenn Sie alle 15 Minuten möchten , ist IMO die am besten lesbare Methode:

OnCalendar=*:0/15

Eine Antwort, die Ihrer Frage am ähnlichsten ist, lautet:

OnCalendar=*:0,15,30,45

Mehr Informationen:

Pavel Šimerda
quelle
3
OnCalendar=0/8:00:00ist es richtig zu sagen "alle 8 Stunden laufen"?
Shackra
4
Ja. Aber das wissen Sie wahrscheinlich schon. :)
Pavel Šimerda
Ich habe es nicht getan, aber ich habe es trotzdem benutzt, lol. Vielen Dank für die Bestätigung!
Shackra
OnCalendar=*:0/15sollte OnCalendar=*:0,15,30,45genau übersetzen (vorausgesetzt, ich habe es in den Dokumenten richtig gelesen). Alle 8 Stunden würde mit realisiert werden OnUnitActiveSec=8hours.
Debilski
3
Wenn Sie ein Intervall systemd-analyzeangeben, kann sich beispielsweise die Ausgabe von als nützlich erweisen systemd-analyze calendar *:0/15.
Sebastian
12

Je nach Systemzeit die Einstellung

OnCalendar=*:0/15

übersetzt genau zu

OnCalendar=*:0,15,30,45

dh es aktiviert die Einheit genau zur vollen Stunde sowie um viertel nach, halb nach und viertel vor.

Abhängig von Ihrem Service ist dies möglicherweise nicht das, was Sie möchten oder in allen Fällen benötigen.

Ein Timer, der alle 15 Minuten ausgeführt wird - zum Beispiel um 1:02, 1:17, 1:32, 1:47, 2:02,… - kann immer abhängig von der letzten Ausführung ausgeführt werden . Timer- Einstellung

OnUnitActiveSec=15min

Jetzt möchten Sie auch, dass das Gerät einige Zeit nach dem Start startet (es sei denn, Sie möchten das Gerät manuell aktivieren oder haben eine Abhängigkeit, die dies bewirkt). Geben Sie dies ggf. an

OnBootSec=10min
OnUnitActiveSec=15min

um das Gerät 10 Minuten nach dem Booten und danach alle 15 Minuten zu starten.

Zusätzlich gibt die Einstellung ist , OnUnitInactiveSecdie die Zeit zu zählen beginnt , nachdem der Dienst angehalten (oder, allgemeiner ausgedrückt , hat die Einheit inaktiviert).

Debilski
quelle
1
Warnung: OnUnitActiveSec scheint ziemlich kaputt zu sein .
Anders Kaseorg