Zum Inhalt springen

Systemd.timer: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
'''{{BASEPAGENAME}}''' - [[Systemd]] Timer Units
'''systemd.timer''' - [[Systemd]] Timer Units


== Beschreibung ==
== Beschreibung ==
; Timer Units
; Timer Units
[https://wiki.ubuntuusers.de/systemd/ systemd] bietet die Möglichkeit, Timer Units zu erstellen. In einer Timer Unit kann hinterlegt werden, dass eine [https://wiki.ubuntuusers.de/systemd/Service_Units/ Service Unit] zu einem bestimmten Zeitpunkt ausgeführt wird.
[https://wiki.ubuntuusers.de/systemd/ systemd] bietet die Möglichkeit, Timer Units zu erstellen
* In einer Timer Unit kann hinterlegt werden, dass eine [https://wiki.ubuntuusers.de/systemd/Service_Units/ Service Unit] zu einem bestimmten Zeitpunkt ausgeführt wird


Timer Units können also Aufgaben übernehmen, welche traditionell von [https://wiki.ubuntuusers.de/Cron/ Cron] ausgeführt werden. Aber Timer Units können nicht nur Befehle zu einem festen Zeitpunkt ausführen (z.B. "um Mitternacht"), sondern auch relativ zum Systemstart (z.B. "5 Minuten später").
Timer Units können also Aufgaben übernehmen, welche traditionell von [https://wiki.ubuntuusers.de/Cron/ Cron] ausgeführt werden
* Aber Timer Units können nicht nur Befehle zu einem festen Zeitpunkt ausführen (z.B. "um Mitternacht"), sondern auch relativ zum Systemstart (z.B. "5 Minuten später")


== Installation ==
== Installation ==
Zeile 20: Zeile 22:
! Unix !! GNU !! Parameter !! Beschreibung
! Unix !! GNU !! Parameter !! Beschreibung
|-
|-
| || || ||  
| || || ||
|-
|-
|}
|}
Zeile 35: Zeile 37:
| 0 || Erfolg
| 0 || Erfolg
|-
|-
| >0 || Fehler
| >0 || Fehler
|}
|}


Zeile 44: Zeile 46:




Timer Units werden als einfache Textdateien angelegt[https://wiki.ubuntuusers.de/systemd/Timer_Units/#source-2 [2]], mit einer Syntax und einem Aufbau ähnlich [https://de.wikipedia.org/wiki/Initialisierungsdatei INI-Dateien]. Der Dateiname kann frei gewählt werden, muss aber auf '''.timer''' enden. Selbsterstellte Timer werden im Verzeichnis '''/etc/systemd/system''' abgespeichert, wozu Root-Rechte[https://wiki.ubuntuusers.de/systemd/Timer_Units/#source-3 [3]] erforderlich sind.
Timer Units werden als einfache Textdateien angelegt[https://wiki.ubuntuusers.de/systemd/Timer_Units/#source-2 [2]], mit einer Syntax und einem Aufbau ähnlich [https://de.wikipedia.org/wiki/Initialisierungsdatei INI-Dateien]
* Der Dateiname kann frei gewählt werden, muss aber auf '''.timer''' enden
* Selbsterstellte Timer werden im Verzeichnis '''/etc/systemd/system''' abgespeichert, wozu Root-Rechte[https://wiki.ubuntuusers.de/systemd/Timer_Units/#source-3 [3]] erforderlich sind


=== Aufbau ===
=== Aufbau ===
Eine Timer Unit hat z.B. folgenden Aufbau
Eine Timer Unit hat z.B
* folgenden Aufbau
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line>
[Unit]
[Unit]
Zeile 67: Zeile 72:
* ''"[Install]"''
* ''"[Install]"''


Die Bedeutung der Sektionen ''"[Unit]"'' und ''"[Install]"'' ist identisch mit der von [https://wiki.ubuntuusers.de/systemd/Service_Units/#Eigene-Service-Units-anlegen Service Units]. Die Sektion ''"[Timer]"'' enthält dabei die Informationen, wann die im Schlüssel <tt>Unit</tt> hinterlegte Unit ausgeführt werden soll.
Die Bedeutung der Sektionen ''"[Unit]"'' und ''"[Install]"'' ist identisch mit der von [https://wiki.ubuntuusers.de/systemd/Service_Units/#Eigene-Service-Units-anlegen Service Units]
* Die Sektion ''"[Timer]"'' enthält dabei die Informationen, wann die im Schlüssel <tt>Unit</tt> hinterlegte Unit ausgeführt werden soll


Im obigen Beispiel würde die Unit namens '''name_der_zu_startenden_unit.service''' wie folgt ausgeführt:  
Im obigen Beispiel würde die Unit namens '''name_der_zu_startenden_unit.service''' wie folgt ausgeführt:
* <tt>OnBootSec=2min</tt> - erste Ausführung 2 Minuten nach Beginn des Bootvorgangs
* <tt>OnBootSec=2min</tt> - erste Ausführung 2 Minuten nach Beginn des Bootvorgangs
* <tt>OnUnitActiveSec=5min</tt> - weitere Ausführungen jeweils 5 Minuten, nachdem die Service Unit zu letzten Mal gestartet wurde
* <tt>OnUnitActiveSec=5min</tt> - weitere Ausführungen jeweils 5 Minuten, nachdem die Service Unit zu letzten Mal gestartet wurde
Zeile 79: Zeile 85:
|-
|-
! Schlüssel !! Beschreibung
! Schlüssel !! Beschreibung
|-  
|-
|| <tt>OnActiveSec</tt>
|| <tt>OnActiveSec</tt>
|| relative Zeit bezogen auf den Zeitpunkt, als die Timer Unit zuletzt aktiviert wurde
|| relative Zeit bezogen auf den Zeitpunkt, als die Timer Unit zuletzt aktiviert wurde
|-  
|-
|| <tt>OnBootSec</tt>
|| <tt>OnBootSec</tt>
|| relative Zeit bezogen auf den Zeitpunkt, als der Rechner gestartet wurde
|| relative Zeit bezogen auf den Zeitpunkt, als der Rechner gestartet wurde
|-  
|-
|| <tt>OnStartupSec</tt>
|| <tt>OnStartupSec</tt>
|| relative Zeit bezogen auf den Zeitpunkt, als systemd gestartet wurde
|| relative Zeit bezogen auf den Zeitpunkt, als systemd gestartet wurde
|-  
|-
|| <tt>OnUnitActiveSec</tt>
|| <tt>OnUnitActiveSec</tt>
|| relative Zeit bezogen auf den Zeitpunkt, als die Service Unit zuletzt aktiviert wurde
|| relative Zeit bezogen auf den Zeitpunkt, als die Service Unit zuletzt aktiviert wurde
|-  
|-
|| <tt>OnUnitInactiveSec</tt>
|| <tt>OnUnitInactiveSec</tt>
|| relative Zeit bezogen auf den Zeitpunkt, als die Service Unit zuletzt deaktiviert wurde
|| relative Zeit bezogen auf den Zeitpunkt, als die Service Unit zuletzt deaktiviert wurde
Zeile 97: Zeile 103:
|}
|}


Außerdem kennen Timer Units noch absolute Zeitangaben. Diese werden im Schlüssel <tt>OnCalendar</tt> angeben. So würde z.B. die folgende Timer Unit:
Außerdem kennen Timer Units noch absolute Zeitangaben
* Diese werden im Schlüssel <tt>OnCalendar</tt> angeben
* So würde z.B
* die folgende Timer Unit:


{| class="wikitable options"
{| class="wikitable options"
|-  
|-
|| 1
|| 1
2
2
Zeile 122: Zeile 131:
|}
|}


die Service Unit '''name_der_zu_startenden_unit.service''' an jedem Tag von Montag bis Freitag um 12 Uhr ausführen.
die Service Unit '''name_der_zu_startenden_unit.service''' an jedem Tag von Montag bis Freitag um 12 Uhr ausführen


=== Zeitangaben ===
=== Zeitangaben ===
Die Timer von systemd kennen eine Vielzahl von Zeiteinheiten. Die kleinste Zeiteinheit sind Mikrosekunden, die größte Jahre. Eine komplette Übersicht inklusive der Einheiten ist in der [http://www.freedesktop.org/software/systemd/man/systemd.time.html#Parsing%20Time%20Spans Dokumentation] von systemd zu finden.
Die Timer von systemd kennen eine Vielzahl von Zeiteinheiten
* Die kleinste Zeiteinheit sind Mikrosekunden, die größte Jahre
* Eine komplette Übersicht inklusive der Einheiten ist in der [http://www.freedesktop.org/software/systemd/man/systemd.time.html#Parsing%20Time%20Spans Dokumentation] von systemd zu finden


Für die Werte des <tt>OnCalendar</tt> Schlüssel kennt systemd eine flexible Syntax zur Zeitangabe. So steht z.B. der Wert <tt>Thu,Fri 2016-*-1,5 11:12:13</tt> für:  
Für die Werte des <tt>OnCalendar</tt> Schlüssel kennt systemd eine flexible Syntax zur Zeitangabe
* am 1. und 5. jedes Monats im Jahr 2016 um 11 Uhr, 12 Minuten und 13 Sekunden ausführen
* So steht z.B
* der Wert <tt>Thu,Fri 2016-*-1,5 11:12:13</tt> für:
* am 1
* und 5
* jedes Monats im Jahr 2016 um 11 Uhr, 12 Minuten und 13 Sekunden ausführen
* aber nur, wenn diese Tage ein Donnerstag oder Freitag sind
* aber nur, wenn diese Tage ein Donnerstag oder Freitag sind


Eine vollständige Übersicht inklusive vieler Beispiele findet man in der [http://www.freedesktop.org/software/systemd/man/systemd.time.html#Calendar%20Events Dokumentation] von systemd.
Eine vollständige Übersicht inklusive vieler Beispiele findet man in der [http://www.freedesktop.org/software/systemd/man/systemd.time.html#Calendar%20Events Dokumentation] von systemd


=== verpasste Timer nachholen ===
=== verpasste Timer nachholen ===
Möchte man eine Timer Unit auch noch nachträglich ausführen lassen, also z.B. falls der Rechner zum Zeitpunkt der Fälligkeit des Timers ausgeschaltet war, muss man im Abschnitt <tt>[Timer]</tt> zusätzlich die Direktive
Möchte man eine Timer Unit auch noch nachträglich ausführen lassen, also z.B
* falls der Rechner zum Zeitpunkt der Fälligkeit des Timers ausgeschaltet war, muss man im Abschnitt <tt>[Timer]</tt> zusätzlich die Direktive
  Persistent=true
  Persistent=true


setzen. Die Voreinstellung von systemd ist hier <tt>false</tt>, d.h. verpasste Timer werden nicht nachgeholt. Die Direktive funktioniert nur in Kombination mit der <tt>OnCalendar</tt> Direktive, nicht mit anderen Direktiven für Zeitpunkte.
setzen
* Die Voreinstellung von systemd ist hier <tt>false</tt>, d.h
* verpasste Timer werden nicht nachgeholt
* Die Direktive funktioniert nur in Kombination mit der <tt>OnCalendar</tt> Direktive, nicht mit anderen Direktiven für Zeitpunkte


=== Timer Units aktivieren ===
=== Timer Units aktivieren ===
Zeile 145: Zeile 164:


=== at Ersatz ===
=== at Ersatz ===
Neben den Aufgaben, die traditionell [https://wiki.ubuntuusers.de/Cron/ Cron] erledigt, kann systemd auch die typische Aufgabe von [https://wiki.ubuntuusers.de/at/ at] übernehmen, einen Job nur ein einziges mal zu einem bestimmten Zeitpunkt zu starten. Es muss kein Script angelegt werden, sondern es genügt das Abschicken eines Befehls im Terminal. Beispiel:
Neben den Aufgaben, die traditionell [https://wiki.ubuntuusers.de/Cron/ Cron] erledigt, kann systemd auch die typische Aufgabe von [https://wiki.ubuntuusers.de/at/ at] übernehmen, einen Job nur ein einziges mal zu einem bestimmten Zeitpunkt zu starten
* Es muss kein Script angelegt werden, sondern es genügt das Abschicken eines Befehls im Terminal
* Beispiel:


<nowiki># als root</nowiki>
<nowiki># als root</nowiki>
Zeile 152: Zeile 173:
systemd-run --user --on-calendar="2022-01-30 20:01:35" touch ~/testfile
systemd-run --user --on-calendar="2022-01-30 20:01:35" touch ~/testfile


Diese Timer werden in den Verzeichnissen '''/run/systemd/transient''' (systemweit) und für Benutzer in '''/run/user/<uid>/systemd/transient''' angelegt. Dabei wird standardmäßig ein zufälliger Name generiert. Man kann den Namen des Timers aber auch explizit mit der Option <tt>--unit=</tt> festlegen.
Diese Timer werden in den Verzeichnissen '''/run/systemd/transient''' (systemweit) und für Benutzer in '''/run/user/<uid>/systemd/transient''' angelegt
* Dabei wird standardmäßig ein zufälliger Name generiert
* Man kann den Namen des Timers aber auch explizit mit der Option <tt>--unit=</tt> festlegen


=== Genauigkeit ===
=== Genauigkeit ===
Per Voreinstellung haben die Timer eine Genauigkeit von einer Minute, d.h aller spätestens eine Minute nach der in der '''.timer''' Datei angegebenen Zeit wird die vom Timer aufgerufene Service Unit aufgerufen.
Per Voreinstellung haben die Timer eine Genauigkeit von einer Minute, d.h aller spätestens eine Minute nach der in der '''.timer''' Datei angegebenen Zeit wird die vom Timer aufgerufene Service Unit aufgerufen


Wer für einzelne Timer Units einen genaueren Ausführungszeitraum braucht, der kann in der Sektion ''"[Timer]"'' zusätzlich den Schlüssel <tt>AccuracySec</tt> angeben, gefolgt von einer Zeitangabe. So würde z.B. <tt>AccuracySec=5s</tt> die Genauigkeit auf 5 Sekunden setzen.
Wer für einzelne Timer Units einen genaueren Ausführungszeitraum braucht, der kann in der Sektion ''"[Timer]"'' zusätzlich den Schlüssel <tt>AccuracySec</tt> angeben, gefolgt von einer Zeitangabe
* So würde z.B. <tt>AccuracySec=5s</tt> die Genauigkeit auf 5 Sekunden setzen


Wer eine höhere Genauigkeit für alle Timer systemweit benötigt, der hinterlegt den gewünschten Wert in der Konfigurationsdatei '''/etc/systemd/system.conf'''.
Wer eine höhere Genauigkeit für alle Timer systemweit benötigt, der hinterlegt den gewünschten Wert in der Konfigurationsdatei '''/etc/systemd/system.conf'''


Aufgrund dieser Tatsache kann nicht eindeutig die verbleibende Zeit bis zum Trigger ermittelt werden. Dieser Umstand wird im [https://unix.stackexchange.com/a/526906/427268 unix.stackexchange] ausführlich beschrieben. Darüber hinaus gibt es noch die Möglichkeit mit <tt>RandomizedDelaySec</tt> eine absichtliche gleichverteilt zufällige Verzögerung zu erzeugen.
Aufgrund dieser Tatsache kann nicht eindeutig die verbleibende Zeit bis zum Trigger ermittelt werden
* Dieser Umstand wird im [https://unix.stackexchange.com/a/526906/427268 unix.stackexchange] ausführlich beschrieben
* Darüber hinaus gibt es noch die Möglichkeit mit <tt>RandomizedDelaySec</tt> eine absichtliche gleichverteilt zufällige Verzögerung zu erzeugen


=== Timer anzeigen ===
=== Timer anzeigen ===
Zeile 172: Zeile 198:
systemctl --user list-timers
systemctl --user list-timers


Möchte man zusätzlich die inaktiven Timer sehen, muss man dem Befehl noch die Option <tt>--all</tt> hinzufügen.
Möchte man zusätzlich die inaktiven Timer sehen, muss man dem Befehl noch die Option <tt>--all</tt> hinzufügen


=== Timer stoppen und deaktivieren ===
=== Timer stoppen und deaktivieren ===
Zeile 179: Zeile 205:
sudo systemctl stop name_des_timers.timer
sudo systemctl stop name_des_timers.timer


stoppen.
stoppen


Sofern Timer wiederkehrend mit dem System-Start aktiviert wurden, deaktiviert man sie unter Verwendung von
Sofern Timer wiederkehrend mit dem System-Start aktiviert wurden, deaktiviert man sie unter Verwendung von
Zeile 185: Zeile 211:
sudo systemctl disable name_des_timers.timer
sudo systemctl disable name_des_timers.timer


Bei mittels <tt>systemd-run</tt> angelegten Timern muss berücksichtigt werden, dass das System für diese zwei Dateien pro Timer generiert; eine mit der Endung '''.service''' und eine mit der Endung '''.timer'''. Dementsprechend stopt man diese mittels:
Bei mittels <tt>systemd-run</tt> angelegten Timern muss berücksichtigt werden, dass das System für diese zwei Dateien pro Timer generiert; eine mit der Endung '''.service''' und eine mit der Endung '''.timer'''
* Dementsprechend stopt man diese mittels:


sudo systemctl stop name_des_timers.{service,timer}
sudo systemctl stop name_des_timers.{service,timer}


Die <tt>systemd-run</tt>-Timer werden damit auch gleichzeitig aus den betreffenden Verzeichnissen gelöscht, so dass sie gegebenenfalls durch erneutes Anlegen mittels <tt>systemd-run</tt> neu eingerichtet werden müssen.
Die <tt>systemd-run</tt>-Timer werden damit auch gleichzeitig aus den betreffenden Verzeichnissen gelöscht, so dass sie gegebenenfalls durch erneutes Anlegen mittels <tt>systemd-run</tt> neu eingerichtet werden müssen




Zeile 203: Zeile 230:
! Datei !! Beschreibung
! Datei !! Beschreibung
|-
|-
| ||  
| ||
|-
|-
| ||  
| ||
|}
|}
<noinclude>
<noinclude>
Zeile 219: Zeile 246:
=== Dokumentation ===
=== Dokumentation ===


; Man-Page  
; Man-Page
# [https://manpages.debian.org/stable/procps/pgrep.1.de.html prep(1)]
# [https://manpages.debian.org/stable/procps/pgrep.1.de.html prep(1)]


; Info-Pages  
; Info-Pages


=== Links ===
=== Links ===
Zeile 233: Zeile 260:
# https://de.wikipedia.org/wiki/Cron
# https://de.wikipedia.org/wiki/Cron


{{DEFAULTSORT:new}}
{{DEFAULTSORT:systemd.timer}}
{{DISPLAYTITLE:new}}
{{DISPLAYTITLE:systemd.timer}}


[[Kategorie:new]]
[[Kategorie:systemd]]


</noinclude>
</noinclude>

Version vom 30. April 2025, 10:47 Uhr

systemd.timer - Systemd Timer Units

Beschreibung

Timer Units

systemd bietet die Möglichkeit, Timer Units zu erstellen

  • In einer Timer Unit kann hinterlegt werden, dass eine Service Unit zu einem bestimmten Zeitpunkt ausgeführt wird

Timer Units können also Aufgaben übernehmen, welche traditionell von Cron ausgeführt werden

  • Aber Timer Units können nicht nur Befehle zu einem festen Zeitpunkt ausführen (z.B. "um Mitternacht"), sondern auch relativ zum Systemstart (z.B. "5 Minuten später")

Installation

systemd ist ein integraler Bestandteil des Systems

  • alle benötigten Komponenten sind standardmäßig installiert

Aufruf

Optionen

Unix GNU Parameter Beschreibung

Parameter

Umgebungsvariablen

Exit-Status

Wert Beschreibung
0 Erfolg
>0 Fehler

Anwendung


Timer Units werden als einfache Textdateien angelegt[2], mit einer Syntax und einem Aufbau ähnlich INI-Dateien

  • Der Dateiname kann frei gewählt werden, muss aber auf .timer enden
  • Selbsterstellte Timer werden im Verzeichnis /etc/systemd/system abgespeichert, wozu Root-Rechte[3] erforderlich sind

Aufbau

Eine Timer Unit hat z.B

  • folgenden Aufbau
[Unit]
Description=Eine kurze Beschreibung des Timers

[Timer]
OnBootSec=2min
OnUnitActiveSec=5min
Unit=name_der_zu_startenden_unit.service

[Install]
WantedBy=multi-user.target
Sektionen

Es gibt drei Sektionen

  • "[Unit]"
  • "[Timer]" und
  • "[Install]"

Die Bedeutung der Sektionen "[Unit]" und "[Install]" ist identisch mit der von Service Units

  • Die Sektion "[Timer]" enthält dabei die Informationen, wann die im Schlüssel Unit hinterlegte Unit ausgeführt werden soll

Im obigen Beispiel würde die Unit namens name_der_zu_startenden_unit.service wie folgt ausgeführt:

  • OnBootSec=2min - erste Ausführung 2 Minuten nach Beginn des Bootvorgangs
  • OnUnitActiveSec=5min - weitere Ausführungen jeweils 5 Minuten, nachdem die Service Unit zu letzten Mal gestartet wurde

Ausführungszeitpunkte

Timer Units kennen fünf verschiedene Schlüssel für relative Ausführungszeitpunkte:

Schlüssel Beschreibung
OnActiveSec relative Zeit bezogen auf den Zeitpunkt, als die Timer Unit zuletzt aktiviert wurde
OnBootSec relative Zeit bezogen auf den Zeitpunkt, als der Rechner gestartet wurde
OnStartupSec relative Zeit bezogen auf den Zeitpunkt, als systemd gestartet wurde
OnUnitActiveSec relative Zeit bezogen auf den Zeitpunkt, als die Service Unit zuletzt aktiviert wurde
OnUnitInactiveSec relative Zeit bezogen auf den Zeitpunkt, als die Service Unit zuletzt deaktiviert wurde

Außerdem kennen Timer Units noch absolute Zeitangaben

  • Diese werden im Schlüssel OnCalendar angeben
  • So würde z.B
  • die folgende Timer Unit:
1

2 3 4 5 6 7 8 9

[Unit]

Description=Eine kurze Beschreibung des Timers

[Timer] OnCalendar=Mon-Fri *-*-* 12:00:00 Unit=name_der_zu_startenden_unit.service

[Install] WantedBy=multi-user.target

die Service Unit name_der_zu_startenden_unit.service an jedem Tag von Montag bis Freitag um 12 Uhr ausführen

Zeitangaben

Die Timer von systemd kennen eine Vielzahl von Zeiteinheiten

  • Die kleinste Zeiteinheit sind Mikrosekunden, die größte Jahre
  • Eine komplette Übersicht inklusive der Einheiten ist in der Dokumentation von systemd zu finden

Für die Werte des OnCalendar Schlüssel kennt systemd eine flexible Syntax zur Zeitangabe

  • So steht z.B
  • der Wert Thu,Fri 2016-*-1,5 11:12:13 für:
  • am 1
  • und 5
  • jedes Monats im Jahr 2016 um 11 Uhr, 12 Minuten und 13 Sekunden ausführen
  • aber nur, wenn diese Tage ein Donnerstag oder Freitag sind

Eine vollständige Übersicht inklusive vieler Beispiele findet man in der Dokumentation von systemd

verpasste Timer nachholen

Möchte man eine Timer Unit auch noch nachträglich ausführen lassen, also z.B

  • falls der Rechner zum Zeitpunkt der Fälligkeit des Timers ausgeschaltet war, muss man im Abschnitt [Timer] zusätzlich die Direktive
Persistent=true

setzen

  • Die Voreinstellung von systemd ist hier false, d.h
  • verpasste Timer werden nicht nachgeholt
  • Die Direktive funktioniert nur in Kombination mit der OnCalendar Direktive, nicht mit anderen Direktiven für Zeitpunkte

Timer Units aktivieren

Nach dem Erstellen müssen Timer Units noch aktiviert und gestartet werden[1]:

sudo systemctl enable name_des_timers.timer
sudo systemctl start name_des_timers.timer

at Ersatz

Neben den Aufgaben, die traditionell Cron erledigt, kann systemd auch die typische Aufgabe von at übernehmen, einen Job nur ein einziges mal zu einem bestimmten Zeitpunkt zu starten

  • Es muss kein Script angelegt werden, sondern es genügt das Abschicken eines Befehls im Terminal
  • Beispiel:

# als root sudo systemd-run --on-calendar="2022-01-30 20:01:35" touch /tmp/testfile # als normaler User systemd-run --user --on-calendar="2022-01-30 20:01:35" touch ~/testfile

Diese Timer werden in den Verzeichnissen /run/systemd/transient (systemweit) und für Benutzer in /run/user/<uid>/systemd/transient angelegt

  • Dabei wird standardmäßig ein zufälliger Name generiert
  • Man kann den Namen des Timers aber auch explizit mit der Option --unit= festlegen

Genauigkeit

Per Voreinstellung haben die Timer eine Genauigkeit von einer Minute, d.h aller spätestens eine Minute nach der in der .timer Datei angegebenen Zeit wird die vom Timer aufgerufene Service Unit aufgerufen

Wer für einzelne Timer Units einen genaueren Ausführungszeitraum braucht, der kann in der Sektion "[Timer]" zusätzlich den Schlüssel AccuracySec angeben, gefolgt von einer Zeitangabe

  • So würde z.B. AccuracySec=5s die Genauigkeit auf 5 Sekunden setzen

Wer eine höhere Genauigkeit für alle Timer systemweit benötigt, der hinterlegt den gewünschten Wert in der Konfigurationsdatei /etc/systemd/system.conf

Aufgrund dieser Tatsache kann nicht eindeutig die verbleibende Zeit bis zum Trigger ermittelt werden

  • Dieser Umstand wird im unix.stackexchange ausführlich beschrieben
  • Darüber hinaus gibt es noch die Möglichkeit mit RandomizedDelaySec eine absichtliche gleichverteilt zufällige Verzögerung zu erzeugen

Timer anzeigen

Man kann sich alle aktiven Timer mit Hilfe von systemctl wie folgt anzeigen lassen:

# Systemweite Timer: systemctl list-timers

# Von Benutzern angelegte Timer: systemctl --user list-timers

Möchte man zusätzlich die inaktiven Timer sehen, muss man dem Befehl noch die Option --all hinzufügen

Timer stoppen und deaktivieren

Wie alle anderen Systemd-Units lassen sich Timer mittels,

sudo systemctl stop name_des_timers.timer

stoppen

Sofern Timer wiederkehrend mit dem System-Start aktiviert wurden, deaktiviert man sie unter Verwendung von

sudo systemctl disable name_des_timers.timer

Bei mittels systemd-run angelegten Timern muss berücksichtigt werden, dass das System für diese zwei Dateien pro Timer generiert; eine mit der Endung .service und eine mit der Endung .timer

  • Dementsprechend stopt man diese mittels:

sudo systemctl stop name_des_timers.{service,timer}

Die systemd-run-Timer werden damit auch gleichzeitig aus den betreffenden Verzeichnissen gelöscht, so dass sie gegebenenfalls durch erneutes Anlegen mittels systemd-run neu eingerichtet werden müssen



Problembehebung

Konfiguration

Dateien

Datei Beschreibung


Anhang

Siehe auch


Dokumentation

Man-Page
  1. prep(1)
Info-Pages

Links

Projekt

Weblinks

  1. Dokumentation von systemd Timer Units
  2. systemd Timer im Wiki von Archlinux
  3. https://de.wikipedia.org/wiki/Systemd
  4. https://de.wikipedia.org/wiki/Cron