Statt mit cron können auch mit dem Systemd-Timer zeitgesteuert Programme gestartet werden. Dazu werden zwei Dateien, *.timer und *.service unter ''/etc/systemd/system'' angelegt. Beispielsweise ''date.timer'' und ''date.service'' um alle 2 Minuten Freitags zwischen 9 und 12 Uhr in den Monaten Januar, Mai und November den aktuellen Zeitstempel in eine Datei ''/tmp/timer'' zu schreiben.
Zeitangabe testen: (Ubuntu 18.04, openSuSE (bis 15 noch nicht enthalten))
systemd-analyze calendar 'FRI *-1,5,11-* 9..12:0/2'
Timer Unit anlegen:
systemctl edit --full --force dateprint.timer
[Unit]
Description=Run dateprint.service every 2 minutes on Fridays in Jan, May and Nov between 0900 and 1058 hrs
[Timer]
OnCalendar=FRI *-1,5,11-* 9..12:0/2
[Install]
WantedBy=timers.target
Syntax Unit File prüfen:
systemd-analyze verify dateprint.timer
((
Fehlermeldung "Attempted to remove disk file system, and we can't allow that." in systemd Versionen vor v239 kann ignoriert werden: https://github.com/systemd/systemd/issues/8592
))
Service Unit anlegen:
systemctl edit --force --full dateprint.service
[Unit]
Description=Prints date into /tmp/timer file
[Service]
Type=oneshot
ExecStart=/bin/sh -c 'date >> /tmp/timer'
User=nutzer19
Group=nutzer19
Syntax Unit File prüfen:
systemd-analyze verify dateprint.service
((
Fehlermeldung "Attempted to remove disk file system, and we can't allow that." in systemd Versionen vor v239 kann ignoriert werden: https://github.com/systemd/systemd/issues/8592
))
Der so erstellte Timer wird dann mit
systemctl enable dateprint.timer --now
aktiviert.