Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
admin_grundlagen:systemd_timer [2017/11/17 10:28] pasqual |
admin_grundlagen:systemd_timer [2024/12/12 14:17] (aktuell) ingo_wichmann |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | 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 in den Monaten Januar, Mai und November den aktuellen Zeitstempel in eine Datei /tmp/timer zu schreiben. | + | 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. |
- | Die date.timer-Datei hat folgenden Aufbau: | + | Zeitangabe testen: (Ubuntu 18.04, <del>openSuSE</del> (bis 15 noch nicht enthalten)) |
+ | systemd-analyze calendar 'FRI *-1,5,11-* 9..12:0/2' | ||
- | [Unit] | + | Timer Unit anlegen: |
- | Description=Run date.service every 2 minutes on Fridays in Jan, May and Nov | + | systemctl edit --full --force dateprint.timer |
+ | |||
+ | <file txt /etc/systemd/system/dateprint.timer> | ||
+ | [Unit] | ||
+ | Description=Run dateprint.service every 2 minutes on Fridays in Jan, May and Nov between 0900 and 1058 hrs | ||
| | ||
- | [Timer] | + | [Timer] |
- | OnCalendar=FRI *-1,5,11-* *:0/2 | + | OnCalendar=FRI *-1,5,11-* 9..12:0/2 |
- | und die date.service sieht so aus: | + | [Install] |
+ | WantedBy=timers.target | ||
+ | </file> | ||
- | [Unit] | + | Syntax Unit File prüfen: |
- | Description=Prints date into /tmp/timer file | + | 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 | ||
+ | |||
+ | <file txt /etc/systemd/system/dateprint.service> | ||
+ | [Unit] | ||
+ | Description=Prints date into /tmp/timer file | ||
| | ||
- | [Service] | + | [Service] |
- | Type=oneshot | + | Type=oneshot |
- | ExecStart=/usr/bin/sh -c '/usr/bin/date >> /tmp/timer' | + | ExecStart=/bin/sh -c 'date >> /tmp/timer' |
- | User=nutzer19 | + | User=nutzer19 |
- | Group=nutzer19'' | + | Group=nutzer19 |
+ | </file> | ||
+ | |||
+ | 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. | ||
- | Der so erstellte Timer wird dann mit systemctl enable date.timer --now aktiviert. | + | Wann läuft der Timer das nächste Mal? |
+ | systemctl status dateprint.timer | ||