Im Cron-Kurs hast du gelernt, wie man zeitgesteuerte Aufgaben automatisiert.
Mit systemd kannst du das Gleiche tun – aber flexibler und besser integriert.
In diesem Kapitel lernst du, wie du systemd Timer erstellst und verwaltest.

🔹 Was sind Timer in systemd?

  • Ein Timer ist eine spezielle Unit-Datei mit der Endung .timer.
  • Er startet zu bestimmten Zeitpunkten einen anderen Dienst (meist eine .service-Unit).
  • Timer sind die systemd-Variante von Cronjobs – nur zuverlässiger und mit besseren Logs.

👉 Vorteil: Du kombinierst einen Timer immer mit einem Service.

🔹 Aufbau eines Timers

Beispiel: /etc/systemd/system/backup.timer

[Unit]
Description=Täglicher Backup-Timer

[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true

[Install]
WantedBy=timers.target
  •  OnCalendar= → Zeitangabe (hier: täglich um 2 Uhr).
  • Persistent=true → Verpasste Jobs (z. B. wenn der PC aus war) werden beim nächsten Start nachgeholt.
  • WantedBy=timers.target → Sorgt dafür, dass der Timer beim Boot aktiviert wird.

🔹 Service und Timer zusammen nutzen

Ein Timer allein reicht nicht – er ruft immer einen Service auf.
Beispiel: /etc/systemd/system/backup.service

[Unit]
Description=Backup Service

[Service]
Type=oneshot
ExecStart=/usr/bin/rsync -a /home/user/ /home/user/backups/

👉 Der Timer backup.timer startet also den Service backup.service.

🔹 Timer aktivieren und starten

  1. systemd neu laden:
    sudo systemctl daemon-reload
  2. Timer starten:
    sudo systemctl start backup.timer
  3. Timer beim Boot aktivieren:
    sudo systemctl enable backup.timer

👉 Damit läuft dein Backup jeden Tag automatisch.

🔹 Timer überwachen

  • Alle aktiven Timer anzeigen:
    systemctl list-timers
  • Beispielausgabe:
    NEXT                         LEFT     LAST                         PASSED UNIT          ACTIVATES
    Mon 2025-09-15 02:00:00 CEST  10h left Sun 2025-09-14 02:00:00 CEST  14h ago backup.timer backup.service
  • Logs prüfen:
    journalctl -u backup.service

👉 Damit hast du volle Kontrolle über deine geplanten Aufgaben.

🔹 Zeitangaben im Detail

Timer nutzen OnCalendar mit einer flexiblen Syntax:

  • Jeden Tag um 2 Uhr:
    OnCalendar=*-*-* 02:00:00
  • Jeden Montag um 8 Uhr:
    OnCalendar=Mon 08:00
  • jede Stunde:
    OnCalendar=hourly
  • Jede Minute (für Tests):
    OnCalendar=*:*:0/60

👉 systemd-Timer sind oft lesbarer als Cron-Syntax.

🔹 Übung

  1. Erstelle einen Service reminder.service, der eine Nachricht in /home/user/reminder.log schreibt.
  2. Erstelle dazu einen Timer reminder.timer, der jede Stunde ausgeführt wird.
  3. Aktiviere und starte den Timer.
  4. Prüfe mit systemctl list-timers, ob dein Timer aktiv ist.
  5. Sieh dir die Logs mit journalctl -u reminder.service an.

✅ Zusammenfassung

  • systemd-Timer sind die moderne Alternative zu Cron.
  • Ein Timer (.timer) aktiviert immer einen Service (.service).
  • Mit OnCalendar legst du Zeitpläne fest, Persistent=true holt verpasste Jobs nach.
  • Mit systemctl list-timers und journalctl kannst du Timer überwachen.

👉 Im nächsten Kapitel kombinieren wir alles Gelernte zu einem Abschlussprojekt: Eigene Services + Timer, die zusammen eine vollautomatisierte Lösung ergeben.

📚 Inhaltsverzeichnis

👉 systemd Kapitel 1: Grundlagen – Was ist systemd und wie arbeitet es?
👉 systemd Kapitel 2: Dienste steuern mit systemctl
👉 systemd Kapitel 3: Logs und Fehlersuche mit journalctl
👉 systemd Kapitel 4: Bootprozess & Targets verstehen
👉 systemd Kapitel 5: Eigene Services erstellen
👉 systemd Kapitel 6: Timer als moderne Cron-Alternative
👉 systemd Kapitel 7: Abschlussprojekt – Eigene Services & Timer kombinieren