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=truesorgt 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.
