Systemd/Timers: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
Tuxnix (Diskussion | Beiträge)
Tuxnix (Diskussion | Beiträge)
K systemd.timers bieten die Möglichkeit Aufgaben zeitlich zu steuern. Die Timer-Unit bestehen aus einer {{ic|.timer}} und einer {{ic|.service}} Datei. Sie untersteht systemd und muss mit dem systemctl Befehl aktiviert werden.
Zeile 18: Zeile 18:
  Description=foo
  Description=foo
  [Timer]
  [Timer]
  OnBootSec=1h
  OnBootSec=2d 1h 30m
OnUnitInactiveSec=1d
  [Install]
  [Install]
  WantedBy=basic.target
  WantedBy=basic.target
Das Beispiel stellt eine Minimalvariante dar. Weitere Optionen siehe [[Systemd/Timers#Details]].


=== Die {{ic|.service}} Datei ===
=== Die {{ic|.service}} Datei ===
Zeile 29: Zeile 29:
  [Service]
  [Service]
  ExecStart=/usr/bin/foo
  ExecStart=/usr/bin/foo
Das Beispiel stellt eine Minimalvariante dar. Weitere Optionen siehe [[Systemd/Timers#Details]].
Als [Service] kann ein Befehl oder ein ausführbares Script genutzt werden.
Als [Service] kann ein Befehl oder ein ausführbares Script genutzt werden.
Service- und Timerdatei werden in /usr/lib/systemd/system/ abgelegt und müssen vor dem . (Punkt) den gleichen Namen tragen.
Service- und Timerdatei werden in /usr/lib/systemd/system/ abgelegt und müssen vor dem . (Punkt) den gleichen Namen tragen.
Zeile 47: Zeile 48:
== Details ==
== Details ==
Nun zu den Kleinigkeiten innerhalb der {{ic|.timer}} und {{ic|.service}} Dateien und welche Angaben hier getätigt werden können.
Nun zu den Kleinigkeiten innerhalb der {{ic|.timer}} und {{ic|.service}} Dateien und welche Angaben hier getätigt werden können.
Die '''Fettgedruckten''' sind Pflicht.


=== [Unit] ===
=== [Unit] ===
* Description= hier wird der Name der Timer-Unit angegeben. Dieser Name erscheint bei der Abfrage mit ''systemctl list-timers''.
* '''Description=''' #hier sollte man einen aussagekräftigen Name angeben. Er erscheint später bei der Abfrage mit ''systemctl list-timers''.
noch k.w.T.
* Documentation= #Eine URL wird hier gebraucht.
 
* Requires= #weitere Units können hier angegeben werden.
* Requisite= #ist identisch mit Requires=
* Wants= #ein weicheres Requires=
* BindsTo= #Auch hier wird eine Unit angegeben. Fällt dieser aus,weil z.B. ein device entfernt wurde, wird die Timer-Unit an der Ausführung gehindert.
* PartOf=
* Conflicts=
* Before=, After=
*
*
*
*
*
*
*
=== [Timer] ===  
=== [Timer] ===  
Es können hier mehrere Zeitangaben gemacht werden. '''Eine Zeitangabe muss''' es allerdings mindestens bei [Timer] geben.


==== relative Zeitangaben ====
==== relative Zeitangaben ====
Sind abhängig von anderen Ereignissen
Sind abhängig von anderen Ereignissen
* OnActiveSec= Zeitspanne seit Aktivierung des Timers selbst
* OnActiveSec= #Zeitspanne seit Aktivierung des Timers selbst
* OnBootSec= Zeitspanne seit dem Booten des Rechners
* OnBootSec= #Zeitspanne seit dem Booten des Rechners
* OnStartupSec= Zeitspanne seit dem ersten Start von systemd
* OnStartupSec= #Zeitspanne seit dem ersten Start von systemd
* OnUnitActiveSec= Zeitspanne seit dem letzten Start des Timers
* OnUnitActiveSec= #Zeitspanne seit dem letzten Start des Timers
* OnUnitInactiveSec= Zeitspanne seit Inaktivität der Timer-Unit
* OnUnitInactiveSec= #Zeitspanne seit Inaktivität der Timer-Unit
(Hier müssen teilweise noch treffendere Vormulierungen gefunden werden)
(Hier müssen teilweise noch treffendere Formulierungen gefunden werden)


Folgende Einheiten können für die rel. Zeitangaben gewählt werden:
Folgende Einheiten können für relative Zeitangaben gewählt werden:
  usec, us
  usec, us
  msec, ms
  msec, ms
Zeile 76: Zeile 92:
siehe auch ''man systemd.time''
siehe auch ''man systemd.time''
Ohne Verwendung einer Einheit werden alle Angaben als Sekunden gewertet.
Ohne Verwendung einer Einheit werden alle Angaben als Sekunden gewertet.
* RandomizedDelaySec= Kann verwendet werden damit nicht mehrere Timer gleichzeitig loslegen. default ist 0.


==== absolute Zeitangaben ====
==== absolute Zeitangaben ====
* OnCalendar= absolute Zeitangabe
* OnCalendar= #absolute Zeitangabe
* Persistent=true - bewirkt, dass ein versäumter Jobs beim nächsten Rechnerstart unverzüglich nachgeholt wird.
* AccuracySec= Die Zeitspanne zum Ausführen beträgt als default 1 Minute. Durch Verwendung von AccuracySec können kleinere Zeitspannen gewählt werden.


Die absolute Zeitangabe hat folgende Syntax:
Die absolute Zeitangabe hat folgende Syntax:
  Thu,Fri 2012-*-1..5 11:12:13
  Thu,Fri 2012-*-1..5 11:12:13


Das obige Beispiel besagt: Um 11:12:13 Uhr, zwischen dem 1. und 5. Tag, aller Monate, des Jahres 2012, jedoch ausschließlich nur an Donnerstagen und Freitagen.
Das obige Beispiel besagt: Um 11:12:13 Uhr, zwischen einschl. dem 1. und 5. Tag, aller Monate, des Jahres 2012, jedoch ausschließlich nur an Donnerstagen und Freitagen.


Die Angabe eines Wochentags erfolgt in Englisch. Sie ist optional.
Die Angabe eines Wochentags erfolgt in Englisch. Sie ist optional.
Jede Rubrik kann mit "," oder ".." versehen werden oder durch "*" ersetzt werden.
Jede Rubrik kann mit "," oder ".." versehen werden oder durch "*" ersetzt werden.


Weiteres siehe ''man systemd.time''.  
Weiteres dazu siehe ''man systemd.time''.
 
==== Weitere Optionen in [Time] ====
* AccuracySec=  #Die Zeitspanne zum Ausführen beträgt als default 1 Minute. Durch Verwendung von AccuracySec kann diese Zeitspannen variert werden.
* RandomizedDelaySec= #Kann verwendet werden damit nicht mehrere Timer exakt zur gleichen Zeit loslegen. default ist 0.
* Unit= #Als default ist dieser Wert identisch mit dem Suffix der {{ic|.timer}} Datei. Bei einer Angabe muss auch eine weitere Datei mit selbigen Namen erstellt werden. Eine Verschachtelung von Units ist hierdurch möglich. Siehe [http://blog.higgsboson.tk/2013/06/09/use-systemd-as-a-cron-replacement Higgsboson Blog] Reflector
* Persistent=true  #bewirkt, dass ein versäumter Jobs beim nächsten Rechnerstart unverzüglich nachgeholt wird.
* WakeSystem= #Weckt das System aus dem supend mode.
* RemainAfterElapse=true/false #true hält den Timer aktiv, false beendet den Timer nach einmaliger Ausführung.


=== [Install] ===
=== [Install] ===
* WantedBy=basic.target
* WantedBy=basic.target
noch k.w.T.


=== [Service] ===
=== [Service] ===
Zeile 106: Zeile 124:
* Environment="ABRT_IGNORE_PYTHON=1"
* Environment="ABRT_IGNORE_PYTHON=1"
* ExecStart= Angabe eines Befehls oder eines ausführbaren Scripts.
* ExecStart= Angabe eines Befehls oder eines ausführbaren Scripts.
== E-Mail ==
[[en:Systemd/Timers]] Die engliche Wiki Seite berichtet darüber.


== Weblinks ==
== Weblinks ==
* [https://kofler.info/systemd-timer-als-cron-alternative/ Michael Kofler Blog] Anleitung
* [https://kofler.info/systemd-timer-als-cron-alternative/ Michael Kofler Blog] Anleitung und Beispiel
* [http://www.dsm.fordham.edu/cgi-bin/man-cgi.pl?topic=systemd.timer&ampsect=5 Man Page] systemd.timer - Timer unit configuration
* [http://www.dsm.fordham.edu/cgi-bin/man-cgi.pl?topic=systemd.time&ampsect=7 Man Page] systemd.time - Time and date specifications
* [https://fedoraproject.org/wiki/Features/SystemdCalendarTimers Fedora Project wiki page] on ''systemd'' calendar timers
* [https://fedoraproject.org/wiki/Features/SystemdCalendarTimers Fedora Project wiki page] on ''systemd'' calendar timers
* [https://wiki.gentoo.org/wiki/Systemd#Timer_services Gentoo wiki section] on ''systemd'' timer services
* [https://wiki.gentoo.org/wiki/Systemd#Timer_services Gentoo wiki section] on ''systemd'' timer services
* [https://www.freedesktop.org/software/systemd/man/systemd.timer.html freedesktop.org]Man page timer
* [https://www.freedesktop.org/software/systemd/man/systemd.timer.html freedesktop.org]Man page timer

Version vom 17. März 2017, 16:35 Uhr

„Systemd/Timers“ wurde von Tuxnix (Diskussion) als in Bearbeitung markiert. Um Bearbeitungskonflikte zu vermeiden, kontaktiere Tuxnix (Diskussion) bitte, bevor du den Artikel bearbeitest.



Timer bieten die Möglichkeit Aufgaben zeitlich zu steuern. Die Timer-Unit bestehen aus einer .timer und einer .service Datei. Sie untersteht systemd und muss mit dem systemctl Befehl aktiviert werden. Eine Alternative hierzu bietet cron.

Beispiel

Die .timer Datei

# Datei /usr/lib/systemd/system/foo.timer
[Unit]
Description=foo
[Timer]
OnBootSec=2d 1h 30m
[Install]
WantedBy=basic.target

Das Beispiel stellt eine Minimalvariante dar. Weitere Optionen siehe Systemd/Timers#Details.

Die .service Datei

# Datei /usr/lib/systemd/system/foo.service
[Unit]
Description=foo
[Service]
ExecStart=/usr/bin/foo

Das Beispiel stellt eine Minimalvariante dar. Weitere Optionen siehe Systemd/Timers#Details. Als [Service] kann ein Befehl oder ein ausführbares Script genutzt werden. Service- und Timerdatei werden in /usr/lib/systemd/system/ abgelegt und müssen vor dem . (Punkt) den gleichen Namen tragen.

De-/Aktivierung

systemctl enable --now foo.timer

Mit enable --now startet der Timer unverzüglich und permanent, sodass er auch nach einem Neustart aktiv ist. Ohne --now werden enable, disable oder reenable erst nach einem reboot wirksam. start und stop hingegen, haben lediglich Auswirkungen auf die laufende Sitzung.

systemctl reenable --now foo.timer 

Genügt damit eine nachträgliche Veränderung der Timer-Unit wirksam wird.

Management

systemctl list-timers --all

Listet alle Timer auf. Sollen nur die aktiven Timer angezeigt werden genügt ein systemctl list-timers

Details

Nun zu den Kleinigkeiten innerhalb der .timer und .service Dateien und welche Angaben hier getätigt werden können. Die Fettgedruckten sind Pflicht.

[Unit]

  • Description= #hier sollte man einen aussagekräftigen Name angeben. Er erscheint später bei der Abfrage mit systemctl list-timers.
  • Documentation= #Eine URL wird hier gebraucht.
  • Requires= #weitere Units können hier angegeben werden.
  • Requisite= #ist identisch mit Requires=
  • Wants= #ein weicheres Requires=
  • BindsTo= #Auch hier wird eine Unit angegeben. Fällt dieser aus,weil z.B. ein device entfernt wurde, wird die Timer-Unit an der Ausführung gehindert.
  • PartOf=
  • Conflicts=
  • Before=, After=

[Timer]

Es können hier mehrere Zeitangaben gemacht werden. Eine Zeitangabe muss es allerdings mindestens bei [Timer] geben.

relative Zeitangaben

Sind abhängig von anderen Ereignissen

  • OnActiveSec= #Zeitspanne seit Aktivierung des Timers selbst
  • OnBootSec= #Zeitspanne seit dem Booten des Rechners
  • OnStartupSec= #Zeitspanne seit dem ersten Start von systemd
  • OnUnitActiveSec= #Zeitspanne seit dem letzten Start des Timers
  • OnUnitInactiveSec= #Zeitspanne seit Inaktivität der Timer-Unit

(Hier müssen teilweise noch treffendere Formulierungen gefunden werden)

Folgende Einheiten können für relative Zeitangaben gewählt werden:

usec, us
msec, ms
seconds, second, sec, s
minutes, minute, min, m
hours, hour, hr, h
days, day, d
weeks, week, w
months, month, M (definiert als 30.44 Tage)
years, year, y (definiert als 365.25 Tage)

siehe auch man systemd.time Ohne Verwendung einer Einheit werden alle Angaben als Sekunden gewertet.

absolute Zeitangaben

  • OnCalendar= #absolute Zeitangabe

Die absolute Zeitangabe hat folgende Syntax:

Thu,Fri 2012-*-1..5 11:12:13

Das obige Beispiel besagt: Um 11:12:13 Uhr, zwischen einschl. dem 1. und 5. Tag, aller Monate, des Jahres 2012, jedoch ausschließlich nur an Donnerstagen und Freitagen.

Die Angabe eines Wochentags erfolgt in Englisch. Sie ist optional. Jede Rubrik kann mit "," oder ".." versehen werden oder durch "*" ersetzt werden.

Weiteres dazu siehe man systemd.time.

Weitere Optionen in [Time]

  • AccuracySec= #Die Zeitspanne zum Ausführen beträgt als default 1 Minute. Durch Verwendung von AccuracySec kann diese Zeitspannen variert werden.
  • RandomizedDelaySec= #Kann verwendet werden damit nicht mehrere Timer exakt zur gleichen Zeit loslegen. default ist 0.
  • Unit= #Als default ist dieser Wert identisch mit dem Suffix der .timer Datei. Bei einer Angabe muss auch eine weitere Datei mit selbigen Namen erstellt werden. Eine Verschachtelung von Units ist hierdurch möglich. Siehe Higgsboson Blog Reflector
  • Persistent=true #bewirkt, dass ein versäumter Jobs beim nächsten Rechnerstart unverzüglich nachgeholt wird.
  • WakeSystem= #Weckt das System aus dem supend mode.
  • RemainAfterElapse=true/false #true hält den Timer aktiv, false beendet den Timer nach einmaliger Ausführung.

[Install]

  • WantedBy=basic.target

[Service]

  • Type=oneshot
  • Nice=19
  • IOSchedulingClass=2
  • IOSchedulingPriority=7
  • Environment="ABRT_IGNORE_PYTHON=1"
  • ExecStart= Angabe eines Befehls oder eines ausführbaren Scripts.

E-Mail

Die engliche Wiki Seite berichtet darüber.

Weblinks