systemd Timer - der modernere Cronjob
systemd Timer sind der Nachfolger von Cron auf modernen Linux-Systemen.
Besser ins Logging integriert, abhängigkeitsfähig und einfacher zu debuggen.
Aufbau: zwei Dateien
Für jeden Timer braucht man eine .service- und eine .timer-Datei.
sudo nano /etc/systemd/system/backup.service
[Unit] Description=Tägliches Datenbank-Backup [Service] Type=oneshot User=root ExecStart=/usr/local/bin/mysql-backup.sh
sudo nano /etc/systemd/system/backup.timer
[Unit] Description=Backup täglich um 3 Uhr [Timer] OnCalendar=*-*-* 03:00:00 Persistent=true [Install] WantedBy=timers.target
Persistent=true holt verpasste Ausführungen nach wenn der Server während des geplanten Zeitpunkts aus war.
Aktivieren
sudo systemctl daemon-reload sudo systemctl enable --now backup.timer
Alle aktiven Timer anzeigen
systemctl list-timers
Zeigt nächste Ausführungszeit und wann zuletzt gelaufen.
Timer-Syntax
OnCalendar=daily # täglich um Mitternacht OnCalendar=weekly # montags um Mitternacht OnCalendar=Mon *-*-* 08:00:00 # montags um 8 Uhr OnCalendar=*:0/15 # alle 15 Minuten OnBootSec=5min # 5 Minuten nach dem Boot OnUnitActiveSec=1h # 1 Stunde nach letzter Ausführung
Logs
journalctl -u backup.service
Der größte Vorteil gegenüber Cron: die Ausgabe landet automatisch im Journal und ist mit journalctl abrufbar.