Was sind systemd-Timer?
Ein systemd-Timer ist ein moderner und leistungsstarker Ersatz für herkömmliche Cron-Jobs, der systemd-Diensteinheiten plant und auslöst. Er vereinfacht die Automatisierung unter Linux, da er im Vergleich zum klassischen Cron-System mehr Flexibilität, Protokollierung und Abhängigkeitsverwaltung bietet.
Warum systemd-Timer statt Cron verwenden?
systemd-Timer bieten gegenüber Cron mehrere Vorteile und sind daher die bevorzugte Wahl für die Aufgabenautomatisierung in Linux-Umgebungen:
- Einheitliche Verwaltung: Verwalten Sie Timer zusammen mit anderen systemd-Units (starten, stoppen, aktivieren, deaktivieren).
- Verbesserte Protokollierung: Verwenden Sie
journalctlfür eine detaillierte Protokollierung und Statusüberwachung. - Flexible Planung: Unterstützt sowohl kalenderbasierte Syntax als auch monotone (relative) Timer.
- Behandlung verpasster Ereignisse: Holt verpasste Ereignisse nach einem Neustart automatisch nach.
Kurzes Beispiel: Ein Skript jeden Tag um Mitternacht ausführen
Hier ist eine Schritt-für-Schritt-Anleitung zum Erstellen eines systemd-Timers, der täglich um Mitternacht ein Skript ausführt:
1. Eine Service-Unit erstellen
Die Service-Unit definiert die auszuführende Aktion – in diesem Fall das Ausführen eines Skripts.
Erstellen Sie die Datei /etc/systemd/system/daily-script.service:
[Unit]
Description=Run my daily script
[Service]
Type=oneshot
ExecStart=/usr/local/bin/myscript.sh
2. Eine Timer-Unit erstellen
Die Timer-Unit plant, wann der Dienst ausgeführt werden soll.
Erstellen Sie die Datei /etc/systemd/system/daily-script.timer:
[Unit]
Description=Run my daily script every day at midnight
[Timer]
OnCalendar=*-*-* 00:00:00
# The format is: YYYY-MM-DD HH:MM:SS
# The above line schedules the task to run once per day at midnight.
Persistent=true
[Install]
WantedBy=timers.target
3. Den Timer aktivieren und starten
Führen Sie die folgenden Befehle aus, um systemd neu zu laden, den Timer zu aktivieren und sofort zu starten:
sudo systemctl daemon-reload
sudo systemctl enable --now daily-script.timer
So prüfen Sie Status und Protokolle
Sobald Ihr Timer eingerichtet ist, können Sie seinen Status und seine Protokolle mit den folgenden Befehlen überwachen:
- Aktive Timer prüfen:
systemctl list-timers
- Timer-Details anzeigen:
systemctl status daily-script.timer
- Protokolle für die Skriptausführung prüfen:
journalctl -u daily-script.service
Referenzen
- Offizielle systemd-Dokumentation:
https://www.freedesktop.org/software/systemd/man/systemd.timer.html
Dies ist die offizielle Dokumentation zu systemd-Timern mit Details zu Syntax, Optionen und Beispielen. - Arch-Wiki zu systemd-Timern:
https://wiki.archlinux.org/title/Systemd/Timers
Eine von der Community gepflegte Anleitung mit praktischen Beispielen und Tipps zur Fehlerbehebung. - Red-Hat-Dokumentation zu systemd-Timern:
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/chap-managing_services_with_systemd#sect-Managing_Timers
Eine ausführliche Erklärung von systemd-Timern für den Unternehmenseinsatz. - Ubuntu-Community-Hilfe-Wiki:
https://help.ubuntu.com/community/systemd
Diese Seite bietet einen Überblick über systemd und enthält Informationen zu Timern.
Zusammenfassung
systemd-Timer sind eine robuste und moderne Lösung für die Aufgabenautomatisierung unter Linux. Sie bieten im Vergleich zu Cron-Jobs mehr Zuverlässigkeit, Kontrolle und Integration mit systemd. Indem Sie eine einfache Service-Unit und Timer-Unit erstellen, können Sie Aufgaben wie Backups, Synchronisation, Bereinigungsjobs und mehr automatisieren. Ob Sie einen privaten Server oder eine Unternehmensinfrastruktur verwalten – systemd-Timer sind ein unverzichtbares Werkzeug für eine effiziente Linux-Automatisierung.