Eine Unit-Konfigurationsdatei, deren Namen auf
».timer« endet, kodiert Informationen über einen durch
Systemd gesteuerten und überwachten Zeitgeber für die
Zeitgeber-basierte Aktivierung.
Diese Handbuchseite führt die für diesen Unit-Typ
spezifischen Konfigurationsoptionen auf. Siehe systemd.unit(5)
für die gemeinsamen Optionen aller Unit-Konfigurationsdateien. Die
gemeinsamen Konfigurationseinträge werden in den generischen
Abschnitten [Unit] und [Install] konfiguriert. Die Zeitgeber-spezifischen
Konfigurationsoptionen werden in dem Abschnitt [Timer] konfiguriert.
Für jede Zeitgeberdatei muss eine passende Unit-Datei
existieren, welche die zu aktivierende Unit, wenn der Zeitgeber
abläuft, beschreibt. Beispiel: Eine Zeitgeberdatei foo.timer
aktiviert einen passenden Dienst foo.service. Die zu aktivierende Unit kann
mit Unit= (siehe unten) gesteuert werden.
Beachten Sie, dass die Unit, die der Zeitgeber aktivieren soll,
nicht neu gestartet wird, wenn sie beim Ablaufen des Zeitgebers bereits
aktiv ist, sondern einfach weiterläuft. In diesem Fall gibt es kein
Konzept des Startens neuer Dienste-Instanzen. Daher sind Dienste mit
gesetztem RemainAfterExit= (die damit aktiv bleiben, selbst wenn sich
der Hauptprozess des Dienstes beendet hat) in der Regel keine guten
Kandidaten für die Aktivierung über wiederholende Zeitgeber,
da sie nur einmal aktiviert werden und dann für immer verbleiben.
Zeitgeberdateien müssen einen Abschnitt [Timer] enthalten,
der Informationen über den durch sie definierten Zeitgeber
transportiert. Die für den Abschnitt [Timer] von Zeitgeber-Units
spezifischen Optionen sind die folgenden:
OnActiveSec=, OnBootSec=, OnStartupSec=,
OnUnitActiveSec=, OnUnitInactiveSec=
Definiert monotone Zeitgeber relativ zu verschiedenen
Startpunkten:
OnActiveSec= definiert einen Zeitgeber relativ zu dem
Moment, zu dem der Zeitgeber selbst aktiviert wurde.
OnBootSec=
definiert einen Zeitgeber relativ zum Systemstartzeitpunkt.
OnStartupSec= definiert einen Zeitgeber relativ zum erstmaligen
Systemd-Startzeitpunkt.
OnUnitActiveSec= definiert einen Zeitgeber
relativ zur letzten Aktivierung der Unit, in der der Zeitgeber aktiviert
wurde.
OnUnitInactiveSec= definiert einen Zeitgeber relativ zur letzten
Deaktivierung der Unit, in der der Zeitgeber aktiviert wurde.
Mehrere Anweisungen vom gleichen oder von verschiedenen Typen
können kombiniert werden. Beispielsweise ist es durch Kombination von
OnBootSec= und OnUnitActiveSec= möglich, einen
Zeitgeber zu definieren, der in regelmäßigen Abständen
abläuft und jedes Mal einen bestimmten Dienst aktiviert.
Die Argumente für die Anweisung sind in Sekunden
konfigurierte Zeitspannen. Beispiel: »OnBootSec=50« bedeutet
50 s nach Systemstart. Das Argument kann auch Zeiteinheiten enthalten.
Beispiel: »OnBootSec=5h 30min« bedeutet 5 Stunden und 30
Minuten nach Systemstart. Für Details über die Syntax von
Zeitspannen, siehe systemd.time(7).
Falls ein mit OnBootSec= oder OnStartupSec=
konfigurierter Zeitgeber bereits in der Vergangenheit liegt, wenn die
Zeitgeber-Unit aktiviert wird, wird er sofort ablaufen und die konfigurierte
Unit wird gestartet. Dies ist bei Zeitgebern, die in anderen Anweisungen
definiert sind, nicht der Fall.
Dies sind monotone Zeitgeber, unabhängig von der
allgemeinen Uhrzeit und Zeitzonen. Falls der Computer temporär
suspendiert ist, stoppt auch die monotone Uhr.
Falls einer dieser Optionen die leere Zeichenkette zugewiesen
wird, wird die Liste der Zeitgeber zurückgesetzt und alle
vorhergehenden Zuweisungen haben keine Auswirkung.
Beachten Sie, dass Zeitgeber nicht notwendigerweise zu dem exakten
Zeitpunkt, der mit diesen Einstellungen konfiguriert ist, auslaufen. Sie
unterliegen der Einstellung AccuracySec= (siehe weiter unten).
OnCalendar=
Definiert Echtzeit- (d.h. Wanduhr-)Zeitgeber mit
Kalenderereignisausdrücken. Siehe
systemd.time(7) für
weitere Informationen über die Syntax von
Kalenderereignisausdrücken. Abgesehen davon ist die Semantik
ähnlich zu der von
OnActiveSec= und verwandten Einstellungen.
Beachten Sie, dass Zeitgeber nicht notwendigerweise zu dem exakten
Zeitpunkt, der mit dieser Einstellung konfiguriert ist, auslaufen. Sie
unterliegen der Einstellung AccuracySec= (siehe weiter unten).
Kann mehr als einmal angegeben werden.
AccuracySec=
Specify the accuracy the timer shall elapse with.
Defaults to 1min. The timer is scheduled to elapse within a time window
starting with the time specified in
OnCalendar=,
OnActiveSec=,
OnBootSec=,
OnStartupSec=,
OnUnitActiveSec= or
OnUnitInactiveSec= and ending the time configured with
AccuracySec= later. Within this time window, the expiry time will be
placed at a host-specific, randomized, but stable position that is
synchronized between all local timer units. This is done in order to optimize
power consumption to suppress unnecessary CPU wake-ups. To get best accuracy,
set this option to 1us. Note that the timer is still subject to the timer
slack configured via
systemd-system.conf(5)'s
TimerSlackNSec=
setting. See
prctl(2) for details. To optimize power consumption, make
sure to set this value as high as possible and as low as necessary.
RandomizedDelaySec=
Verzögert den Zeitgeber um eine zufällig
gewählte, gleichmäßig verteilte Zeitspannen zwischen 0
und dem festgelegten Zeitwert. Standardmäßig 0, wodurch
angezeigt wird, dass keine zufällige Verzögerung angewandt
werden soll. Jede Zeitgeber-Unit wird diese Verzögerung zufällig
vor jeder Iteration bestimmen und die Verzögerung wird einfach auf die
nächste ablaufende Zeit addiert. Dies ist nützlich, um die
Abfertigung von ähnlich konfigurierten Zeitgeberereignissen über
eine bestimmte Zeitspanne auszudehnen, damit sie nicht alle gleichzeitig
feuern und möglicherweise Ressourcen überlasten. Beachten Sie
die Beziehung zu AccuracySec= (weiter oben): letzteres erlaubt dem
Diensteverwalter, Zeitgeberereignisse innerhalb einer bestimmten Zeitspanne
zusammenzuführen, um das Aufwachen zu minimieren während erstere
das Gegenteil macht: sie verteilt Zeitgeberereignisse über eine
Zeitspanne, damit gleichzeitiges Feuern unwahrscheinlich wird. Falls
RandomizedDelaySec= und AccuracySec= zusammen verwandt werden,
wird zuerst die zufällige Verzögerung addiert und dann wird das
Ergebnis möglicherweise weiter verschoben, um es mit anderen, auf dem
System stattfindenden Zeitgeberereignissen zusammenzuführen. Wie oben
erwähnt, ist die Vorgabe für AccuracySec= 1min und
für RandomizedDelaySec= 0, wodurch das Zusammenführen von
Zeitgeberereignissen ermutigt wird. Um Zeitgeberereignisse optimal über
eine bestimmte Zeitspanne zu verteilen, setzen Sie RandomizedDelaySec=
auf einen höheren Wert und AccuracySec=1us.
Unit=
Die Unit, die beim Ablaufen des Zeitgebers aktiviert
werden soll. Das Argument ist ein Unit-Name, dessen Endung nicht
».timer« ist. Falls dieser Wert nicht festgelegt ist, ist die
Vorgabe ein Dienst, der den gleichen Namen (bis auf die Endung) wie die
Zeitgeber-Unit hat. (Siehe oben.) Es wird empfohlen, dass der Unit-Name, der
aktiviert wird, und der Unit-Name der Zeitgeber-Unit bis auf die Endung
identisch sind.
Persistent=
Akzeptiert ein logisches Argument. Falls wahr, wird der
Zeitpunkt, zu dem die Dienste-Unit das letzte Mal ausgelöst wurde, auf
Platte gespeichert. Wenn der Zeitgeber aktiviert wird, wird die Dienste-Unit
sofort ausgelöst, falls sie mindestens einmal in der Zeit, zu der der
Zeitgeber inaktiv war, ausgelöst worden wäre. Dies ist
nützlich, um verpasste Läufe, als die Maschine ausgeschaltet
gewesen ist, nachzuholen. Beachten Sie, dass diese Einstellung nur für
mit OnCalendar= konfigurierte Zeitgeber Wirkung entfaltet.
Standardmäßig false.
WakeSystem=
Akzeptiert ein logisches Argument. Falls wahr, wird ein
ablaufender Zeitgeber dazu führen, dass das System aus dem Suspend
aufwacht, falls das System suspendiert war und das System dieses
unterstützt. Beachten Sie, dass dies nur sicherstellt, dass das System
zu einer geeigneten Zeit aufwacht. Die Option wird nicht dafür sorgen,
dass das System nach Abschluss der zu erledigenden Arbeiten wieder suspendiert
wird. Standardmäßig false.
RemainAfterElapse=
Akzeptiert ein logisches Argument. Falls wahr, wird ein
abgelaufener Zeitgeber geladen bleiben und sein Zustand kann weiter abgefragt
werden. Falls falsch, wird ein abgelaufener Zeitgeber, der nicht mehr ablaufen
kann, entladen. Insbesondere für flüchtige Zeitgeber-Units, die
nach ihrem ersten Ablaufen verschwinden sollen, ist es besonders
nützlich, dies abzuschalten. Beachten Sie, dass diese Einstellung
Auswirkungen auf wiederholtes Starten einer Zeitgeber-Unit, die nur einmal
abläuft, hat: Falls RemainAfterElapse= eingeschaltet ist, wird
sie nicht wieder gestartet und es wird zugesichert, dass sie nur einmal
abläuft. Falls allerdings RemainAfterElapse= augeschaltet ist,
könnte sie wieder gestartet werden, falls sie bereits abgelaufen ist,
und daher mehrfach ausgelöst werden. Standardmäßig
yes.