Du hast jetzt deine ersten Cronjobs erstellt. Aber was tun, wenn sie nicht laufen wie geplant?
In diesem Kapitel lernst du, wie du Cronjobs überwachst, Ausgaben protokollierst und Fehler aufspürst.
🔹 Warum Cronjobs manchmal „nicht funktionieren“
Es gibt typische Ursachen, warum ein Cronjob fehlschlägt:
- Falsche Zeitangaben – ein kleiner Fehler in der Crontab-Syntax genügt.
- Pfadprobleme – Cron nutzt eine minimale Umgebung, d. h. viele Befehle liegen nicht dort, wo du sie erwartest.
- Berechtigungen – dein Benutzer hat vielleicht nicht genug Rechte für den Befehl.
- Ausgaben verpuffen – Cron zeigt keine Meldungen direkt im Terminal an.
👉 Deshalb ist es wichtig, Cronjobs aktiv zu überwachen.
🔹 Ausgaben in Logdateien schreiben
Standardmäßig werden Ausgaben eines Cronjobs an die lokale Mailbox des Benutzers geschickt (z. B. mail
-Befehl).
Da viele Systeme keine Mailkonfiguration haben, ist es besser, Ausgaben in Dateien umzuleiten.
Beispiel:
* * * * * echo "Cronjob läuft" >> /home/user/cron_test.log 2>&1
>>
→ hängt die Ausgabe an eine Datei an.2>&1
→ sorgt dafür, dass auch Fehler (stderr) ins gleiche Log geschrieben werden.
👉 So kannst du jederzeit prüfen, ob dein Job läuft und welche Fehler auftreten.
🔹 Cron-Logs im System prüfen
Cron selbst protokolliert, wann es Jobs startet. Diese Einträge findest du in den System-Logs:
Auf Debian/Ubuntu:
grep CRON /var/log/syslog
Auf CentOS/RHEL:
grep CRON /var/log/cron
Beispielausgabe:
Sep 14 12:00:01 server CRON[1234]: (user) CMD (/home/user/backup.sh)
👉 Hier siehst du: Datum, Benutzer und welcher Befehl gestartet wurde.
🔹 Umgebungsvariablen in Cron
Ein häufiger Fehler: Befehle laufen im Terminal, aber nicht in Cron.
Grund: Cron startet mit einer minimalen Umgebung.
- Dein
PATH
ist kürzer als im Terminal. - Variablen wie
HOME
oderUSER
sind eventuell nicht gesetzt.
Lösung:
Nutze absolute Pfade für Befehle.
0 2 * * * /usr/bin/rsync -a /home/user/ /home/user/Backup/
Falls nötig, setze Variablen in der Crontab selbst:
PATH=/usr/local/bin:/usr/bin:/bin
🔹 Cronjobs simulieren
Um zu testen, ob dein Befehl funktioniert, führe ihn direkt im Terminal aus:
/home/user/backup.sh
Wenn er dort funktioniert, aber im Cron nicht, liegt es fast immer an:
- Pfadproblemen
- fehlenden Rechten
- oder fehlenden Umgebungsvariablen.
🔹 Praktische Tools zur Überwachung
crontab
-l → zeigt aktuelle Jobs an.systemctl status cron
→ prüft, ob Cron läuft.journalctl -u cron
→ Logs unter systemd.- Eigene Logfiles (
>> logfile
) → direkte Kontrolle deiner Jobs.
🔹 Übung
- Lege einen Job an, der jede Minute date in /tmp/croncheck.log schreibt.
- Warte 5 Minuten und prüfe den Inhalt mit:
cat /tmp/croncheck.log
- Führe absichtlich einen falschen Befehl aus, z. B.:
* * * * * falscherbefehl >> /tmp/error.log 2>&1
→ Sieh dir an, wie Cron den Fehler ins Log schreibt.
- Prüfe mit
grep CRON /var/log/syslog
, ob deine Jobs gestartet wurden.
✅ Zusammenfassung
- Cronjobs geben keine Meldungen direkt im Terminal aus – du musst Ausgaben umleiten.
- Logs findest du in
/var/log/syslog
oder/var/log/cron
. - Absolute Pfade
(/usr/bin/rsync)
sind Pflicht, weil Cron nur eine minimale Umgebung lädt. - Fehler lassen sich gezielt provozieren und so nachvollziehen.
👉 Im nächsten Kapitel schauen wir uns praktische Cron-Beispiele an – von automatischen Backups über Systempflege bis hin zu Netzwerküberwachung.