← Zurück zum Blog

systemd-Timer statt Cron

systemd-Timer statt Cron

Cron ist seit Jahrzehnten der Klassiker für geplante Aufgaben unter Linux. Auf modernen Systemen mit systemd gibt es aber eine robustere Alternative: systemd-Timer. Zugegebenermaßen habe ich die auch lange ignoriert und einfach cron verwendet.

Warum überhaupt wechseln?

systemd-Timer bieten gegenüber Cron einige Vorteile:

  • Logging direkt im Journal (journalctl)
  • Abhängigkeiten zu anderen Units möglich
  • Verpasste Läufe lassen sich nachholen (Persistent=true)
  • Saubere Trennung von "was" (Service) und "wann" (Timer)

Beispiel: tägliches Backup

Zuerst der Service unter /etc/systemd/system/backup.service:

[Unit]
Description=Tägliches Backup

[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh

Dann der passende Timer /etc/systemd/system/backup.timer:

[Unit]
Description=Backup täglich um 02:30

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

[Install]
WantedBy=timers.target

Aktivieren und starten:

sudo systemctl daemon-reload
sudo systemctl enable --now backup.timer

Status prüfen

systemctl list-timers
journalctl -u backup.service
Hinweis: Persistent=true sorgt dafür, dass ein verpasster Lauf (z. B.
weil der Server aus war) beim nächsten Start nachgeholt wird.

Fazit

Für einzelne, einfache Aufgaben bleibt Cron völlig in Ordnung. Sobald du aber Logging, Abhängigkeiten oder Nachholen brauchst, sind systemd-Timer die deutlich robustere Wahl.