Wer unter Ubuntu wiederkehrende Aufgaben automatisieren möchte, kommt an Cron und systemd Timer kaum vorbei. Genau hier wird das Thema Cron und systemd Timer unter Ubuntu professionell einsetzen besonders interessant. Viele Administratoren starten zuerst mit kleinen Aufgaben: ein Backup jede Nacht, ein Logfile regelmäßig prüfen oder ein Update-Skript einmal pro Woche ausführen. Solche Aufgaben lassen sich mit Zeitsteuerung zuverlässig automatisieren. Für Anfänger ist das sehr hilfreich, weil dadurch aus einzelnen Shell-Befehlen echte Verwaltungsabläufe werden. Unter Ubuntu sind dafür zwei Wege besonders wichtig: das klassische cron und moderne systemd Timer. systemd beschreibt Timer als eigene Unit-Dateien, die zeitgesteuerte Aktivierungen auslösen, meist für passende Service-Units. Die Ubuntu-Manpage erklärt außerdem, dass Timer-Dateien auf .timer enden und Informationen für durch systemd überwachte Zeitsteuerung enthalten. :contentReference[oaicite:0]{index=0}
Für Linux-Lernende, IT-Studenten und Administratoren ist das Thema wichtig, weil geplante Aufgaben zum Alltag jedes Servers gehören. Backups, Prüfskripte, Bereinigung alter Dateien oder wiederkehrende Wartung laufen oft unbeaufsichtigt. Genau deshalb reicht es nicht, nur Befehle zu kennen. Man muss auch wissen, wie man diese Befehle sicher, sauber und kontrolliert zu bestimmten Zeiten starten lässt. Cron ist dafür seit sehr langer Zeit bekannt und einfach zu nutzen. systemd Timer sind moderner, enger in systemd integriert und bringen zusätzliche Möglichkeiten wie bessere Statusabfragen, Abhängigkeiten und Timer-Optionen mit. Die systemd-Timer-Dokumentation erklärt zum Beispiel, dass Timer standardmäßig einen gleichnamigen Service aktivieren und sowohl Kalenderangaben als auch monotone Zeitangaben wie OnBootSec= oder OnUnitActiveSec= unterstützen. :contentReference[oaicite:1]{index=1}
Was ist Cron unter Ubuntu?
Cron ist ein klassischer Linux-Dienst für zeitgesteuerte Aufgaben. Dabei werden Befehle oder Skripte zu fest definierten Zeiten ausgeführt. Typische Beispiele sind tägliche Berichte, stündliche Prüfungen oder nächtliche Backups. Für Anfänger ist Cron oft der erste Kontakt mit Linux-Automatisierung. Der große Vorteil liegt in der Einfachheit: Sie definieren einen Zeitplan und einen Befehl, und cron führt ihn aus. Genau deshalb ist Cron unter Ubuntu weiterhin sehr wichtig, auch wenn systemd Timer heute oft als modernere Alternative gelten.
Typische Cron-Aufgaben
- Backups nachts starten
- Logdateien regelmäßig prüfen
- Temporäre Dateien bereinigen
- Statusmeldungen oder Reports erzeugen
- Skripte zu festen Zeiten ausführen
Was sind systemd Timer unter Ubuntu?
systemd Timer sind Zeitgeber-Units, die andere Units, meist Services, zeitgesteuert aktivieren. Die Ubuntu-Manpage zu systemd.timer erklärt ausdrücklich, dass eine Datei mit der Endung .timer Informationen über einen durch systemd kontrollierten und überwachten Timer enthält. Standardmäßig aktiviert ein Timer eine gleichnamige Service-Unit, also zum Beispiel backup.timer den Dienst backup.service. Genau das ist ein großer Unterschied zu Cron: Bei systemd Timern werden Zeitplanung und eigentliche Aufgabe sauber in getrennten Units beschrieben. :contentReference[oaicite:2]{index=2}
Für professionelle Ubuntu-Systeme ist das sehr nützlich, weil sich Dienste, Logs, Status und Fehler besser in die allgemeine systemd-Verwaltung einfügen. Außerdem unterstützen systemd Timer sowohl Kalenderangaben mit OnCalendar= als auch monotone Timer wie OnBootSec=, OnStartupSec= oder OnUnitActiveSec=. Die systemd-Timer-Dokumentation beschreibt genau diese Unterscheidung und erklärt, dass mehrere Timer-Ausdrücke sogar kombiniert werden können. :contentReference[oaicite:3]{index=3}
Cron und systemd Timer: der wichtigste Unterschied
Der wichtigste Unterschied ist die Struktur. Cron schreibt Zeit und Befehl direkt in eine Zeile. systemd Timer trennen Zeitsteuerung und eigentliche Aufgabe in zwei Einheiten: eine .timer-Datei und meist eine .service-Datei. Dadurch wird die Konfiguration oft klarer und professioneller. Außerdem lassen sich Services mit systemctl besser überwachen. Wer also nur schnell einen einfachen Zeitjob braucht, ist mit Cron oft sofort arbeitsfähig. Wer dagegen moderne Ubuntu-Server strukturiert verwalten möchte, profitiert häufig von systemd Timern.
Einfacher Vergleich
- Cron ist klassisch, schnell und sehr einfach.
- systemd Timer sind moderner und enger in systemd integriert.
- Cron nutzt Zeit+Befehl in einer Zeile.
- systemd Timer trennen Timer und Service sauber.
Wann Cron sinnvoll ist
Cron ist besonders sinnvoll, wenn Sie einfache und klare Zeitpläne brauchen. Gerade für kleine Ubuntu-Server, Testmaschinen oder klassische Verwaltungsaufgaben ist Cron oft schnell genug eingerichtet. Wer bereits einfache Shell-Skripte nutzt, kann diese direkt mit Cron verbinden. Für Anfänger ist Cron deshalb oft leichter zu verstehen als systemd Timer, weil die Konfiguration zunächst sehr kompakt wirkt.
Wann Cron gut passt
- Für einfache tägliche oder stündliche Aufgaben
- Für kleine Skripte ohne komplexe Abhängigkeiten
- Für klassische Linux-Serverwartung
- Wenn eine schnelle Einrichtung wichtiger ist als tiefe Integration
Wann systemd Timer sinnvoller sind
systemd Timer sind besonders nützlich, wenn Sie ohnehin stark mit systemd arbeiten. Dann lassen sich Dienste, Logs und Zeitsteuerung sauber gemeinsam verwalten. Die systemd-Timer-Manpage erklärt außerdem, dass Timer-Einstellungen wie Persistent= genutzt werden können. Ist ein Timer mit Persistent=true konfiguriert, wird die zugehörige Aufgabe beim nächsten Aktivieren sofort gestartet, falls geplante Läufe während einer inaktiven Phase verpasst wurden. Das ist für Server mit Neustarts oder temporären Ausfällen sehr hilfreich. :contentReference[oaicite:4]{index=4}
Wann systemd Timer gut passen
- Wenn Logs und Status sauber über systemd kontrolliert werden sollen
- Wenn Timer und Services klar getrennt sein sollen
- Wenn verpasste Läufe nachgeholt werden sollen
- Wenn moderne Ubuntu-Server konsistent mit systemd verwaltet werden
Die Crontab unter Ubuntu verstehen
Der klassische Einstieg in Cron läuft über die persönliche Crontab. Eine Crontab enthält Zeitangaben und den auszuführenden Befehl. Jede Zeile besteht typischerweise aus fünf Zeitfeldern und danach dem Kommando. Damit können Sie Minuten, Stunden, Tage, Monate und Wochentage steuern.
Crontab bearbeiten
crontab -e
Crontab anzeigen
crontab -l
Mit crontab -e öffnen Sie die persönliche Crontab des aktuellen Benutzers. Dort tragen Sie dann die gewünschten Zeitjobs ein.
Den Aufbau einer Cron-Zeile verstehen
Eine Cron-Zeile besteht typischerweise aus fünf Zeitfeldern und einem Befehl:
Minute Stunde Tag Monat Wochentag Befehl
Beispiel: täglich um 2:30 Uhr
30 2 * * * /home/user/backup.sh
Das bedeutet: Jeden Tag um 02:30 Uhr wird das Skript /home/user/backup.sh gestartet. Sterne stehen dabei für „jeder mögliche Wert“.
Typische Zeitangaben
- * bedeutet jeder Wert
- , trennt mehrere Werte
- – definiert Bereiche
- */5 bedeutet alle 5 Einheiten
Wichtige Cron-Beispiele für Ubuntu-Admins
Gerade für Administratoren sind einige Cron-Muster sehr nützlich. Solche Standardbeispiele helfen beim Einstieg in die zeitgesteuerte Serververwaltung.
Alle 5 Minuten
*/5 * * * * /home/user/check.sh
Jeden Tag um 1 Uhr nachts
0 1 * * * /home/user/nightly.sh
Jeden Sonntag um 4 Uhr
0 4 * * 0 /home/user/weekly-backup.sh
Am ersten Tag jedes Monats um 6 Uhr
0 6 1 * * /home/user/monthly-report.sh
Warum Cron-Skripte vollständige Pfade nutzen sollten
Ein sehr häufiger Anfängerfehler ist, in Cron-Jobs nur relative Pfade oder abgekürzte Befehle zu verwenden. Cron läuft in einer anderen Umgebung als eine interaktive Shell. Deshalb sollten Sie in Cron-Einträgen möglichst immer vollständige Pfade zu Skripten und wichtigen Programmen nutzen.
Besser so
0 2 * * * /usr/bin/bash /home/user/backup.sh
Zusätzlich sollte das Skript selbst sauber und ausführbar sein:
chmod +x /home/user/backup.sh
Ausgaben von Cron-Jobs kontrollieren
Wenn ein Cron-Job fehlschlägt, ist es wichtig zu wissen, warum. Deshalb sollten Ausgaben und Fehler oft in Logdateien umgeleitet werden. So wird die Fehlersuche deutlich einfacher.
Beispiel mit Umleitung
0 2 * * * /home/user/backup.sh >> /var/log/backup.log 2>&1
Hier werden sowohl normale Ausgaben als auch Fehlermeldungen in dieselbe Logdatei geschrieben.
Eine einfache systemd Service-Unit schreiben
Bevor ein systemd Timer sinnvoll arbeiten kann, braucht er meist eine Service-Unit. Diese Service-Unit beschreibt die eigentliche Aufgabe. systemd erklärt allgemein, dass unterschiedliche Unit-Typen unterschiedliche Abschnitte haben und dass Service-Units ihre spezifischen Einstellungen im Abschnitt [Service] tragen. :contentReference[oaicite:5]{index=5}
Beispiel für backup.service
[Unit]
Description=Einfaches Backup-Skript
[Service]
Type=oneshot
ExecStart=/home/user/backup.sh
Diese Datei würde typischerweise unter /etc/systemd/system/backup.service gespeichert werden. Der Typ oneshot passt gut für kurze Aufgaben wie Skripte oder Wartungsjobs.
Einen einfachen systemd Timer erstellen
Nachdem die Service-Unit vorhanden ist, wird der passende Timer erstellt. Die systemd-Timer-Manpage erklärt, dass Timer-Dateien im Abschnitt [Timer] die zeitspezifischen Optionen enthalten. Ein häufiger und leicht verständlicher Weg ist OnCalendar= für kalenderbasierte Zeitpläne. :contentReference[oaicite:6]{index=6}
Beispiel für backup.timer
[Unit]
Description=Taeglicher Backup-Timer
[Timer]
OnCalendar=--* 02:30:00
Persistent=true
[Install]
WantedBy=timers.target
Diese Datei würde typischerweise unter /etc/systemd/system/backup.timer liegen. Mit Persistent=true wird ein verpasster Lauf nachgeholt, wenn das System zur geplanten Zeit nicht aktiv war. :contentReference[oaicite:7]{index=7}
systemd Timer aktivieren und starten
Nach dem Erstellen oder Ändern von Unit-Dateien sollte systemd die Konfiguration neu einlesen. Danach kann der Timer aktiviert und gestartet werden.
systemd neu laden
sudo systemctl daemon-reload
Timer aktivieren
sudo systemctl enable backup.timer
Timer starten
sudo systemctl start backup.timer
Timer-Status prüfen
systemctl status backup.timer
Alle Timer anzeigen
systemctl list-timers --all
Das Kommando systemctl list-timers –all ist besonders nützlich, weil Sie damit sehen, wann der nächste Lauf stattfindet und welche Timer zuletzt aktiv waren. :contentReference[oaicite:8]{index=8}
OnCalendar und monotone Timer verstehen
systemd Timer kennen zwei wichtige Grundideen: kalenderbasierte Timer und monotone Timer. Kalenderbasierte Timer arbeiten mit festen Zeitpunkten wie Uhrzeiten, Wochentagen oder Datumsangaben. Monotone Timer arbeiten relativ zu einem Ereignis, zum Beispiel seit dem Booten oder seit der letzten Aktivierung. Die systemd-Timer-Manpage erklärt die Optionen OnBootSec=, OnStartupSec=, OnUnitActiveSec= und OnUnitInactiveSec= genau in diesem Zusammenhang. :contentReference[oaicite:9]{index=9}
Beispiel: 10 Minuten nach dem Boot
[Timer]
OnBootSec=10min
Beispiel: alle 30 Minuten nach letzter Aktivierung
[Timer]
OnUnitActiveSec=30min
Diese Art von Zeitsteuerung ist mit Cron so nicht direkt in derselben Form integriert. Genau darin liegt einer der praktischen Unterschiede.
Verpasste Läufe und Persistenz
Ein großer Vorteil von systemd Timern ist die Option Persistent=. Laut systemd-Timer-Manpage startet die zugehörige Service-Unit beim nächsten Aktivieren sofort, wenn sie während einer inaktiven Zeit eigentlich hätte ausgeführt werden müssen. Das ist besonders für Laptops, temporär ausgeschaltete Systeme oder unregelmäßig laufende Server nützlich. Cron in seiner klassischen Form bietet dieses Verhalten nicht von sich aus in derselben Weise. :contentReference[oaicite:10]{index=10}
RandomizedDelaySec und AccuracySec verstehen
Bei vielen Servern kann es sinnvoll sein, gleichartige Timer nicht alle exakt zur selben Sekunde auszuführen. Die systemd-Timer-Dokumentation erklärt dafür RandomizedDelaySec=. Diese Option streckt Ausführungen zufällig innerhalb eines Zeitfensters, damit nicht alle Jobs gleichzeitig feuern. Zusätzlich gibt es AccuracySec=, das beeinflusst, wie genau der Timer auslöst. Diese beiden Optionen sind besonders für größere Umgebungen nützlich. :contentReference[oaicite:11]{index=11}
Beispiel
[Timer]
OnCalendar=daily
RandomizedDelaySec=10min
AccuracySec=1min
Damit wird die tägliche Aufgabe nicht immer exakt zur selben Sekunde gestartet, sondern kontrolliert verteilt.
Logs und Fehlersuche bei systemd Timern
Ein weiterer Vorteil von systemd Timern ist die enge Integration in systemd und Journal-Logs. Da der Timer einen Service auslöst, können Sie nicht nur den Timer selbst prüfen, sondern auch den zugehörigen Service und seine Logmeldungen. Das macht die Fehlersuche oft deutlich einfacher als bei still scheiternden Cron-Jobs.
Service-Status prüfen
systemctl status backup.service
Logs anzeigen
journalctl -u backup.service
So sehen Sie direkt, ob das Skript gelaufen ist und welche Ausgaben oder Fehler dabei entstanden sind. :contentReference[oaicite:12]{index=12}
Cron oder systemd Timer: was ist unter Ubuntu besser?
Eine pauschale Antwort gibt es nicht. Cron ist oft schneller eingerichtet und für einfache Aufgaben sehr gut. systemd Timer sind moderner, sauberer integriert und bieten mehr Struktur. Wenn Sie bereits mit systemd arbeiten und Status, Logs sowie Abhängigkeiten sauber verwalten möchten, sind Timer oft die bessere Wahl. Wenn Sie nur einen kleinen Zeitjob brauchen, reicht Cron häufig aus.
Praktische Faustregel
- Cron für einfache klassische Zeitjobs
- systemd Timer für moderne, strukturierte Serververwaltung
- Cron für schnellen Einstieg
- systemd Timer für bessere Kontrolle und Integration
Typische Fehler bei Cron und systemd Timern
Viele Probleme entstehen nicht durch die Technik selbst, sondern durch kleine Konfigurationsfehler. Gerade Anfänger sollten typische Stolperfallen kennen.
Häufige Fehler bei Cron
- Relative statt absolute Pfade verwenden
- Ausführungsrechte für Skripte vergessen
- Ausgaben nicht protokollieren
- Die andere Laufzeitumgebung von Cron unterschätzen
Häufige Fehler bei systemd Timern
- Die passende .service-Datei fehlt
- Nach Änderungen wurde kein daemon-reload ausgeführt
- Timer wurde nicht aktiviert
- OnCalendar und OnBootSec werden verwechselt
Eine sinnvolle Lernstrategie für Anfänger
Auch wenn das Thema professionell klingt, sollten Anfänger klein anfangen. Zuerst eine einfache Cron-Aufgabe schreiben und testen. Danach ein kleines Bash-Skript per Cron starten. Anschließend dieselbe Aufgabe als systemd Service und Timer umsetzen. So wird der Unterschied zwischen beiden Methoden sehr klar. Danach können Sie sich an verpasste Läufe, Boot-Timer oder erweiterte Timer-Optionen heranwagen.
Empfohlene Reihenfolge
- Cron-Zeitfelder verstehen
- Einen einfachen Cron-Job testen
- Ein kleines Skript mit Logging ausführen
- Dann eine passende systemd Service-Unit schreiben
- Danach einen einfachen Timer mit OnCalendar erstellen
- Später monotone Timer und Persistenz ergänzen
Wichtige Befehle im Überblick
Wenn Sie Cron und systemd Timer unter Ubuntu professionell einsetzen möchten, sollten Sie diese Befehle sicher kennen.
Crontab bearbeiten
crontab -e
Crontab anzeigen
crontab -l
Timer neu laden
sudo systemctl daemon-reload
Timer aktivieren
sudo systemctl enable backup.timer
Timer starten
sudo systemctl start backup.timer
Timer-Status prüfen
systemctl status backup.timer
Alle Timer anzeigen
systemctl list-timers --all
Service-Logs ansehen
journalctl -u backup.service
Wer diese Grundlagen sauber versteht und praktisch anwendet, kann unter Ubuntu geplante Aufgaben deutlich professioneller und zuverlässiger ausführen. Genau das ist der eigentliche Mehrwert: Nicht nur Befehle kennen, sondern Verwaltungsaufgaben so planen, dass sie automatisch, nachvollziehbar und stabil zur richtigen Zeit laufen. Cron und systemd Timer sind dafür zwei sehr wichtige Werkzeuge, die in fast jeder ernsthaften Linux-Umgebung ihren Platz haben. :contentReference[oaicite:13]{index=13}
::contentReference[oaicite:14]{index=14}
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.