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?
Antworten:
Ihre Syntax wird alle 15 Sekunden übersetzt . Wenn Sie alle 15 Minuten möchten , ist IMO die am besten lesbare Methode:
Eine Antwort, die Ihrer Frage am ähnlichsten ist, lautet:
Mehr Informationen:
quelle
OnCalendar=0/8:00:00
ist es richtig zu sagen "alle 8 Stunden laufen"?OnCalendar=*:0/15
sollteOnCalendar=*:0,15,30,45
genau übersetzen (vorausgesetzt, ich habe es in den Dokumenten richtig gelesen). Alle 8 Stunden würde mit realisiert werdenOnUnitActiveSec=8hours
.systemd-analyze
angeben, kann sich beispielsweise die Ausgabe von als nützlich erweisensystemd-analyze calendar *:0/15
.Je nach Systemzeit die Einstellung
übersetzt genau zu
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
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
um das Gerät 10 Minuten nach dem Booten und danach alle 15 Minuten zu starten.
Zusätzlich gibt die Einstellung ist ,
OnUnitInactiveSec
die die Zeit zu zählen beginnt , nachdem der Dienst angehalten (oder, allgemeiner ausgedrückt , hat die Einheit inaktiviert).quelle
OnUnitActiveSec
scheint ziemlich kaputt zu sein .