Zum Inhalt springen

Cron-Job wird nicht ausgeführt: So starten Sie ihn

Mittel 20 Min. Aktualisiert:

Kurze Antwort

Ein Cron-Job wird meist wegen falscher Syntax in der Crontab, fehlender Ausführungsberechtigung, falschem Pfad zum Skript oder weil der Cron-Dienst nicht läuft, nicht ausgeführt. Prüfen Sie die Logs, testen Sie das Skript manuell und verwenden Sie absolute Pfade.

So erkennen Sie das Problem

  • Der Job startet nicht zur geplanten Zeit
  • Keine erwartete Ausgabe oder Datei
  • Cron-Log ist leer oder zeigt Fehler
  • Skript funktioniert manuell, aber nicht über Cron
  • E-Mail-Benachrichtigungen über Fehler kommen nicht an

Häufigste Ursachen

Cron-Dienst nicht gestartet

Wenn der Cron-Daemon nicht aktiv ist, wird kein Job ausgeführt. Prüfen Sie den Dienststatus und starten Sie ihn bei Bedarf.

Falsche Syntax in der Crontab

Ein Fehler in den Zeitfeldern oder eine fehlende abschließende Zeile kann die Ausführung verhindern. Prüfen Sie das Format und verwenden Sie `crontab -l`, um aktive Jobs anzuzeigen.

Fehlende Ausführungsberechtigung

Das Skript muss die Ausführungsberechtigung haben (`chmod +x`). Prüfen Sie außerdem, ob der Besitzer der Benutzer ist, der Cron ausführt.

Falscher Pfad oder Umgebung

Cron verwendet eine eingeschränkte Umgebung, daher können relative Pfade und Variablen problematisch sein. Verwenden Sie absolute Pfade und definieren Sie Variablen explizit.

Probleme mit Berechtigungen oder Besitzverhältnissen

Dateien, auf die das Skript zugreift, müssen für den Cron-Benutzer lesbar sein. Prüfen Sie Berechtigungen und Besitzverhältnisse von Dateien und Verzeichnissen.

Lösung Schritt für Schritt

  1. 1

    Prüfen Sie, ob der Cron-Dienst läuft

    Führen Sie systemctl status cron aus (oder systemctl status crond auf einigen Distributionen). Wenn der Dienst nicht aktiv ist, starten Sie ihn mit sudo systemctl start cron und aktivieren Sie den automatischen Start mit sudo systemctl enable cron.

  2. 2

    Überprüfen Sie aktive Cron-Jobs

    Führen Sie crontab -l aus, um die Jobs für den aktuellen Benutzer anzuzeigen. Für Systemjobs sehen Sie in die Datei /etc/crontab und das Verzeichnis /etc/cron.d/. Stellen Sie sicher, dass keine Syntaxfehler vorhanden sind.

  3. 3

    Testen Sie das Skript manuell

    Führen Sie das Skript im Terminal mit demselben Benutzer aus, der Cron ausführt. Wenn es manuell nicht funktioniert, liegt das Problem im Skript, nicht in Cron. Beheben Sie die Fehler und testen Sie erneut.

  4. 4

    Verwenden Sie absolute Pfade

    Geben Sie in der Crontab den vollständigen Pfad zum Skript und Interpreter an, z. B. /usr/bin/python3 /home/benutzer/skript.py. Dasselbe gilt für Dateien, auf die das Skript zugreift.

  5. 5

    Legen Sie Umgebungsvariablen fest

    Fügen Sie am Anfang der Crontab PATH=/usr/bin:/bin und andere benötigte Variablen hinzu. Sie können sie auch innerhalb des Skripts definieren. Vermeiden Sie die Abhängigkeit von Variablen aus einer interaktiven Sitzung.

  6. 6

    Prüfen Sie Berechtigungen und Besitzverhältnisse

    Stellen Sie sicher, dass das Skript die Ausführungsberechtigung hat (chmod +x skript.sh) und dass der Benutzer, der Cron ausführt, es lesen und ausführen darf. Prüfen Sie auch die Berechtigungen der Verzeichnisse und Dateien, die das Skript verwendet.

  7. 7

    Überprüfen Sie die Cron-Logs

    Auf Systemen mit systemd-journald verwenden Sie journalctl -u cron oder journalctl -u crond. Auf anderen Systemen sehen Sie in /var/log/syslog oder /var/log/cron. Suchen Sie nach Fehlern im Zusammenhang mit Ihrem Job.

  8. 8

    Leiten Sie die Ausgabe vorübergehend in eine Datei um

    Fügen Sie >> /tmp/cron.log 2>&1 am Ende der Zeile in der Crontab hinzu, um die Standardausgabe und Fehler zu erfassen. Überprüfen Sie dann die Datei, nachdem der Job ausgeführt wurde.

  9. 9

    Prüfen Sie, ob die Zeit korrekt ist

    Stellen Sie sicher, dass die Systemzeit korrekt ist (date). Wenn die Zeitzone falsch ist, wird Cron zur falschen Zeit ausgeführt. Stellen Sie die Zeitzone und die Zeitsynchronisierung ein.

Wenn nichts hilft

Wenn Sie alles oben Genannte überprüft haben und der Job immer noch nicht ausgeführt wird, versuchen Sie, Cron im Debug-Modus zu starten. Bei Vixie Cron stoppen Sie vorübergehend den Dienst und starten ihn manuell mit sudo cron -f -x proc (oder der entsprechenden Option für Ihren Cron); starten Sie den Dienst nach dem Test neu. Dadurch werden detaillierte Informationen zur Verarbeitung der Jobs angezeigt. Prüfen Sie außerdem, ob Einschränkungen durch die Dateien /etc/cron.allow und /etc/cron.deny bestehen, die den Benutzer daran hindern könnten, Cron zu verwenden. Ziehen Sie schließlich eine Alternative wie systemd-Timer in Betracht, der besseres Logging und Verwaltung bietet.

So beugen Sie vor

  • Überprüfen Sie regelmäßig die Cron-Logs
  • Verwenden Sie absolute Pfade und explizite Variablen
  • Testen Sie Skripte, bevor Sie sie zu Cron hinzufügen
  • Beschränken Sie Berechtigungen und überwachen Sie Dateibesitzverhältnisse

Wann Sie einen Profi rufen sollten

Wenn Sie die Ursache nicht finden können oder keinen Zugriff auf Logs und Systemdateien haben, wenden Sie sich an den IT-Support. Dieser kann das Problem schneller isolieren und Betriebsunterbrechungen vermeiden.

IT-Infrastruktur-Wartung · Server, Netzwerke, Backup, Sicherheit und Helpdesk

Häufige Fragen

Warum wird mein Cron-Job nicht ausgeführt, obwohl die Syntax korrekt ist?

Der häufigste Grund ist eine fehlende Ausführungsberechtigung für das Skript oder ein falscher Pfad zum Interpreter. Prüfen Sie, ob das Skript bei manueller Ausführung funktioniert und ob alle Pfade absolut sind.

Wie sehe ich Fehler, die Cron meldet?

Sie können die Ausgabe vorübergehend in eine Datei umleiten, indem Sie `>> /tmp/cron.log 2>&1` in die Crontab einfügen. Überprüfen Sie auch die Systemlogs wie `/var/log/syslog` oder `journalctl -u cron`.

Ist Cron dasselbe wie Anacron?

Nein. Cron ist für präzise Zeitplanung gedacht, führt aber verpasste Jobs nicht aus, wenn der Computer ausgeschaltet war. Anacron wurde entwickelt, um verpasste Jobs auszuführen, garantiert aber keine genaue Zeit.

Teilen
Keine Lösung gefunden?Der KI-IT-Assistent ist rund um die Uhr erreichbar. Beschreiben Sie das Problem oder senden Sie einen Screenshot und erhalten Sie eine Anleitung für Ihren Fall.KI-IT-Assistent fragen