SYSTEMD.TIMER(5)

BEZEICHNUNG
systemd.timer - Zeitgeber-Unit-Konfiguration

ÜBERSICHT

Zeitgeber.timer

BESCHREIBUNG

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.

AUTOMATISCHE ABHÄNGIGKEITEN

  Implizite Abhängigkeiten

Die folgenden Abhängigkeiten werden implizit hinzugefügt:

    • Zeitgeber-Units erhalten automatisch eine Abhängigkeit Before= von dem Dienst, den sie aktivieren sollen.

  Standardabhängigkeiten

Die folgenden Abhängigkeiten werden hinzugefügt, es sei denn, DefaultDependencies=no ist gesetzt:

    • Zeitgeber-Units werden automatisch Abhängigkeiten vom Typ Requires= und After= von sysinit.target, eine Abhängigkeit vom Typ Before= von timers.target sowie Conflicts= und Before= von shutdown.target haben, um sicherzustellen, dass sie vor dem Herunterfahren des Systems sauber beendet werden. Nur Zeitgeber-Units, die in der frühen Systemstartphase oder spät beim Herunterfahren beteiligt sind, sollten die Option DefaultDependencies= deaktivieren.

    • Zeitgeber-Units mit mindestens einer Anweisung OnCalendar= werden eine zusätzliche Abhängigkeit After= von time-sync.target haben, um zu vermeiden, dass sie gestartet werden, bevor die Systemuhr korrekt gestellt ist.

OPTIONEN

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:

    Tabelle 1. Einstellungen und ihre Startpunkte
    Einstellung | Bedeutung
    OnActiveSec= | Definiert einen Zeitgeber relativ zu dem Moment, zu dem die Zeitgeber-Unit selbst aktiviert wurde.
    OnBootSec= | Definiert einen Zeitgeber relativ zum Zeitpunkt des Systemstarts. Für die Systemverwalterinstanz wird dies in Containern auf OnStartupSec= abgebildet, wodurch beide äquivalent werden.
    OnStartupSec= | Definiert einen Zeitgeber relativ zum erstmaligen Start des Diensteverwalters. Für System-Zeitgeber-Units ist dies sehr ähnlich zu OnBootSec=, da der Systemdiensteverwalter im Allgemeinen sehr früh im Systemstartprozess gestartet wird. Es ist hauptsächlich nützlich, wenn dies in Units konfiguriert wird, die im benutzerbezogenen Diensteverwalter laufen, da der Benutzerdiensteverwalter im Allgemeinen nur beim erstmaligen Anmelden und nicht bereits während des Systemstarts gestartet wird.
    OnUnitActiveSec= | Definiert einen Zeitgeber relativ zu dem Zeitpunkt, zu dem die Unit, die der Zeitgeber aktiviert, letztmalig aktiviert wurde.
    OnUnitInactiveSec= | Definiert einen Zeitgeber relativ zu dem Zeitpunkt, zu dem die Unit, die der Zeitgeber aktiviert, letztmalig deaktiviert wurde.

    Mehrere Anweisungen vom gleichen oder von verschiedenen Typen können kombiniert werden. In diesem Fall werden die Zeitgeber-Units auslösen, wannimmer einer der festgelegten Zeitgeber-Ausdrücke abläuft. 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. Desweiteren können sowohl monotone Zeit- als auch kalendarische OnCalendar=-Ausdrücke in der gleichen Zeitgeber-Unit kombiniert werden.

    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, pausiert auch die monotone Uhr.

    Falls einer dieser Optionen die leere Zeichenkette zugewiesen wird, wird die Liste der Zeitgeber zurückgesetzt (sowohl monotoner Zeitgeber als auch OnCalendar=-Zeitgeber, siehe unten) 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, wodurch die Zeitgeber-Unit ausgelöst wird, wannimmer einer der festgelegten Ausdrücke abläuft. Desweiteren können Kalender-Zeitgeber und monotone Zeitgeber (siehe oben) in der gleichen Zeitgeber-Unit kombiniert werden.

    Falls einer dieser Optionen die leere Zeichenkette zugewiesen wird, wird die Liste der Zeitgeber zurückgesetzt (sowohl OnCalendar=-Zeitgeber als auch monotone Zeitgeber, siehe oben) und alle vorhergehenden Zuweisungen haben keine Auswirkung.

AccuracySec=
    Legt die Genauigkeit fest, mit der der Zeitgeber ablaufen soll. Standardmäßig 1min. Der Zeitgeber wird so eingeplant, dass er innerhalb eines Zeitfensters abläuft, das mit der in OnCalendar=, OnActiveSec=, OnBootSec=, OnStartupSec=, OnUnitActiveSec= oder OnUnitInactiveSec= festgelegten Zeit beginnt und zu der mit AccuracySec= konfigurierten Zeit später endet. Innerhalb dieses Zeitfensters wird die Ablaufzeit auf eine Rechner-spezifische, zufällige aber stabile Position gelegt, die unter allen lokalen Zeitgeber-Units synchronisiert ist. Dies erfolgt, um den Stromverbrauch zu optimieren, um unnötiges Aufwachen der CPU zu vermeiden. Um die größte Genauigkeit zu erhalten, setzen Sie diese Option auf 1us. Beachten Sie, dass der Zeitgeber weiterhin dem mit der Einstellung TimerSlackNSec= von systemd-system.conf(5) konfigurierten Zeitgeberspielraum unterliegt. Siehe prctl(2) für Details. Um den Stromverbrauch zu optimieren, wählen Sie diesen Wert so hoch wie möglich und so niedrig wie notwendig.

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.

OnClockChange=, OnTimezoneChange=
    Diese Optionen akzeptieren logische Argumente. Falls wahr, wird die Dienste-Unit ausgelöst, wenn die Systemuhr (CLOCK_REALTIME) relativ zu der monotonen Uhr (CLOCK_MONOTONIC) springt oder wenn die lokale Systemzeitzone verändert wird. Diese Optionen können alleine oder in Kombination mit anderen Zeitgeber-Ausdrücken (siehe oben) innerhalb der gleichen Zeitgeber-Unit verwandt werden. Diese Optionen sind standardmäßig falsch.

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.

    Verwenden Sie systemctl clean --what=state … auf der Zeitgeber-Unit, um den durch diese Option verwalteten Zeitstempel auf der Platte zu entfernen. Verwenden Sie diesen Befehl insbesondere bevor Sie eine Zeitgeber-Unit deinstallieren. Siehe systemctl(1) für Details.

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.

    Beachten Sie, dass diese Funktionalität Privilegien benötigt und daher im Allgemeinen nur im Systemdiensteverwalter verfügbar ist.

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.

SIEHE AUCH

systemd(1), systemctl(1), systemd.unit(5), systemd.service(5), systemd.time(7), systemd.directives(7), systemd-system.conf(5), prctl(2)

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <debian@helgefjell.de> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an <debian-l10n-german@lists.debian.org>.