Ich muss eine Timer-Einheit für eine Maschine schreiben, die häufig ausgeschaltet wird (z. B. klassisches Desktop-Setup). Diese Zeitschaltuhr muss regelmäßig, aber nicht sehr oft (z. B. wöchentlich, monatlich) aktiviert werden.
Ich habe einige Ansätze gefunden, aber sie passen nicht wirklich zusammen:
Nach dem Manpages nur die
OnBootSec
und dieOnStartupSec
Richtlinien, wenn der konfigurierten Zeitpunkt in der Vergangenheit aktiviert werden. Ich habe auch einige Beispiele gefunden, bei denen eine Kombination dieser verwendet wurdeOnActiveSec
, um ein reguläres Ereignis zu definieren. Das Problem ist: Jedes Mal, wenn die Maschine hochgefahren wird, aktiviert der Timer die konfigurierte Einheit. Wenn Sie einen Timer haben, der EINMAL pro Woche / Monat laufen sollte, ist das viel zu oft. Zum Beispiel: Ich möchte nicht, dass meine Protokolle dreimal am Tag gedreht werden ...Lösungen mit der
OnCalendar
Richtlinie. Wenn die Maschine zum konfigurierten Zeitpunkt ausgeschaltet wird (meistens um Mitternacht, da der Timer nach dem nächsten Start nicht aktiviert wird, wenn Sie die Stunde in der Zeitangabe weglassen, die standardmäßig auf 00:00:00 eingestellt ist). Zumindest habe ich das so verstanden. Ist das richtig ?
Hier kommt also die Frage:
Wird der Timer mit Kalenderereignissen direkt nach dem nächsten Start aktiviert, wenn die konfigurierte Zeit in der Vergangenheit liegt?
Wenn nicht: Gibt es eine Problemumgehung, um ein solches Verhalten zu erzielen?
Antworten:
Diese Funktion wurde bereits mit der Direktive in systemd (ver> = 212) implementiert,
Persistent=
sodass Sie nurPersistent=true
in die Unit-Datei einfügen müssen, während Sie mit derOnCalendar=
Direktive das Datum und die Uhrzeit für die Ausführung des Jobs festlegen.quelle
OnBootSec
und ergebenOnActiveSec
.Persistent
ist es, einmal beim Booten zu starten, wenn mindestens ein Lauf wegen eines Ausfalls verpasst wurde?Laut dieser E-Mail in der Mailingliste von systemd-devel steht das gewünschte Verhalten auf der Roadmap und wird in Zukunft hinzugefügt.
quelle