Logo von CURIAWEB, Anbieter für Webhosting, Domains und WordPress Hosting

Cronjob in cPanel erstellen und Zeitplan richtig einstellen

Lesezeit ca.: 19 Minuten

Mit einem Cronjob kannst du auf deinem Webhosting bestimmte Befehle oder Skripte automatisch zu festgelegten Zeiten ausführen lassen. Cronjobs eignen sich beispielsweise für regelmäßige Wartungsaufgaben, Importe, Exporte, Datenverarbeitung oder zeitgesteuerte PHP-Skripte.

Im CURIAWEB-cPanel kannst du Cronjobs direkt über die Benutzeroberfläche erstellen und verwalten. Dabei sind vor allem zwei Angaben entscheidend: Wann soll der Cronjob ausgeführt werden und welcher Befehl soll dabei ausgeführt werden?

In dieser Anleitung zeigen wir dir, wie du einen Cronjob in cPanel erstellst, Zeitangaben richtig einstellst, absolute Pfade verwendest und typische Fehler vermeidest.

Wichtig: Ein Cronjob führt den eingetragenen Befehl automatisch aus. Prüfe deshalb insbesondere bei Skripten, Importen, Lösch- oder Wartungsfunktionen sorgfältig, was der Befehl bewirkt, bevor du ihn regelmäßig ausführen lässt.

Was ist ein Cronjob? #

Ein Cronjob ist eine zeitgesteuerte Aufgabe auf einem Linux-System.

Vereinfacht besteht ein Cronjob aus:

Zeitplan
+
Befehl
=
automatisch ausgeführte Aufgabe

Du kannst damit beispielsweise festlegen:

Jeden Tag um 03:00 Uhr
→ PHP-Skript ausführen

oder:

Alle 15 Minuten
→ bestimmten Prozess starten

Der Server übernimmt die Ausführung anschließend automatisch, ohne dass du dich jedes Mal bei cPanel anmelden musst.

Wofür werden Cronjobs verwendet? #

Cronjobs werden von Webanwendungen und individuellen Skripten für unterschiedlichste wiederkehrende Aufgaben eingesetzt.

Typische Beispiele sind:

  • regelmäßige Datenimporte
  • automatische Exporte
  • Verarbeitung von Warteschlangen
  • zeitgesteuerte Wartungsaufgaben
  • Aufruf eigener PHP-Skripte
  • Synchronisation von Daten
  • Ausführung von Aufgaben eines CMS oder Shops

Welche Cronjobs benötigt werden, hängt von der verwendeten Anwendung ab.

Cronjob nicht ohne Vorgabe einer Anwendung erstellen #

Wenn eine Softwaredokumentation einen bestimmten Cronjob verlangt, solltest du den dort angegebenen Befehl und das empfohlene Intervall als Ausgangspunkt verwenden.

Erfinde nicht selbst einen Ausführungsbefehl, wenn du nicht weißt, wie die Anwendung ihre zeitgesteuerten Aufgaben verarbeitet.

Praxis-Tipp: Viele Webanwendungen geben in ihrer Dokumentation bereits einen vollständigen Cron-Befehl oder zumindest das auszuführende Skript und ein empfohlenes Intervall an.

1. Bei cPanel anmelden #

Melde dich bei deinem CURIAWEB-cPanel an.

Öffne anschließend:

Erweiterte Optionen → Cronjobs

Dort kannst du bestehende Cronjobs einsehen und neue Aufgaben erstellen.

2. E-Mail-Adresse für Cronjob-Ausgaben prüfen #

Im Cronjob-Bereich kann cPanel eine Einstellung für E-Mail-Benachrichtigungen beziehungsweise Cron-Ausgaben anbieten.

Wenn ein Cronjob eine Ausgabe erzeugt, kann diese – abhängig von der Konfiguration – per E-Mail zugestellt werden.

Das kann bei der Einrichtung und Fehlersuche sehr hilfreich sein.

Wichtig: Unterdrücke die Ausgabe eines neuen Cronjobs nicht sofort. Gerade beim ersten Test können Fehlermeldungen wichtige Hinweise liefern, wenn der Befehl nicht korrekt funktioniert.

3. Neuen Cronjob hinzufügen #

Gehe zum Bereich für das Hinzufügen eines neuen Cronjobs.

Ein Cronjob benötigt grundsätzlich:

  • Minute
  • Stunde
  • Tag des Monats
  • Monat
  • Wochentag
  • Befehl

cPanel kann zusätzlich vordefinierte Zeitpläne beziehungsweise allgemeine Einstellungen anbieten, mit denen häufig verwendete Intervalle einfacher ausgewählt werden können.

Die fünf Zeitfelder verstehen #

Die klassische Cron-Syntax besteht aus fünf Zeitfeldern:

Minute Stunde Tag Monat Wochentag

Danach folgt der auszuführende Befehl.

Das Schema sieht vereinfacht so aus:

* * * * * Befehl
│ │ │ │ │
│ │ │ │ └─ Wochentag
│ │ │ └─── Monat
│ │ └───── Tag des Monats
│ └─────── Stunde
└───────── Minute

Was bedeutet der Stern *? #

Ein Stern:

*

bedeutet in einem Cron-Zeitfeld grundsätzlich, dass jeder mögliche Wert dieses Feldes berücksichtigt wird.

Beispielsweise:

* * * * *

entspricht einer sehr häufigen Ausführung – nämlich grundsätzlich jede Minute.

Achtung: Verwende * * * * * nicht unüberlegt. Ein Skript, das jede Minute gestartet wird, kann unnötig Ressourcen verbrauchen oder mehrfach gleichzeitig laufen, wenn eine Ausführung länger dauert.

4. Zeitplan festlegen #

Lege nun fest, wie häufig der Cronjob ausgeführt werden soll.

Wenn die verwendete Anwendung ein bestimmtes Intervall vorgibt, solltest du dich grundsätzlich an diese Empfehlung halten.

Beispiel: alle 5 Minuten #

Ein Cronjob alle fünf Minuten verwendet typischerweise:

*/5 * * * *

Das bedeutet:

Minute:      */5
Stunde:      *
Tag:         *
Monat:       *
Wochentag:   *

Der Befehl wird damit grundsätzlich alle fünf Minuten ausgeführt.

Beispiel: alle 15 Minuten #

*/15 * * * *

Damit erfolgt die Ausführung grundsätzlich alle 15 Minuten.

Beispiel: jede Stunde #

Soll der Cronjob zu Beginn jeder Stunde ausgeführt werden:

0 * * * *

Beispielsweise:

01:00
02:00
03:00
04:00
...

Beispiel: täglich um 03:00 Uhr #

0 3 * * *

Das bedeutet:

Minute:      0
Stunde:      3
Tag:         *
Monat:       *
Wochentag:   *

Der Cronjob läuft grundsätzlich einmal täglich um 03:00 Uhr gemäß der für die Cron-Ausführung maßgeblichen Server-Zeit.

Beispiel: täglich um 03:30 Uhr #

30 3 * * *

Der Cronjob wird damit grundsätzlich täglich um 03:30 Uhr ausgeführt.

Beispiel: jeden Montag um 06:00 Uhr #

0 6 * * 1

Hier steht die 1 für Montag.

Beispiel: am ersten Tag jedes Monats #

Soll ein Cronjob am ersten Tag jedes Monats um 02:00 Uhr ausgeführt werden:

0 2 1 * *

Beispiel: alle sechs Stunden #

Eine mögliche Schreibweise lautet:

0 */6 * * *

Damit wird der Befehl grundsätzlich in einem Sechs-Stunden-Raster ausgeführt.

Listen und Bereiche in Cron-Ausdrücken #

Cron unterstützt neben einzelnen Werten und Sternen auch weitere Schreibweisen.

Ein Bindestrich kann einen Bereich definieren:

1-5

Eine durch Kommas getrennte Liste kann mehrere konkrete Werte angeben:

1,3,5

Ein Schrägstrich kann für ein Intervall verwendet werden:

*/10

Welche Kombination sinnvoll ist, hängt vom gewünschten Zeitplan ab.

Vordefinierte cPanel-Zeitpläne verwenden #

Für häufig benötigte Intervalle kannst du die von cPanel angebotenen allgemeinen beziehungsweise vordefinierten Einstellungen verwenden.

Das reduziert das Risiko, die fünf Zeitfelder versehentlich falsch zu setzen.

Kontrolliere trotzdem die daraus erzeugten Werte, damit sie tatsächlich dem gewünschten Zeitplan entsprechen.

Serverzeit und lokale Uhrzeit unterscheiden #

Ein wichtiger Punkt bei Cronjobs ist die zugrunde liegende Zeitzone.

Die für die Ausführung maßgebliche Server-Zeit muss nicht zwingend deiner lokalen Uhrzeit entsprechen.

Wenn ein Cronjob zu einer bestimmten lokalen Uhrzeit laufen soll, solltest du deshalb prüfen, welche Zeitzone für die Cron-Ausführung gilt.

Wichtig: Wenn ein Cronjob scheinbar eine oder mehrere Stunden „zu früh“ oder „zu spät“ läuft, prüfe zuerst die Zeitzone, bevor du den Zeitplan auf Verdacht veränderst.

Sommer- und Winterzeit berücksichtigen #

Auch Zeitumstellungen können bei zeitkritischen Aufgaben eine Rolle spielen.

Ob und wie sich eine Zeitumstellung auf einen Cronjob auswirkt, hängt von der Zeitzonenkonfiguration des Systems ab.

Wenn eine Aufgabe zwingend zu einer bestimmten Schweizer Ortszeit laufen muss, solltest du die tatsächlichen Ausführungszeiten entsprechend kontrollieren.

5. Auszuführenden Befehl eintragen #

Im Feld Befehl trägst du ein, was der Server zum festgelegten Zeitpunkt ausführen soll.

Der konkrete Befehl hängt vollständig von der jeweiligen Anwendung oder Aufgabe ab.

Bei einem PHP-Skript kann das Grundprinzip beispielsweise so aussehen:

/pfad/zur/php-binary /home/CPANELUSER/public_html/script.php

Die tatsächlichen Pfade müssen zu deinem Hosting-Account und zur verwendeten PHP-Umgebung passen.

Achtung: Kopiere keine PHP-Pfade aus fremden Hosting-Anleitungen. Der Pfad zur PHP-Binary kann sich je nach Server, PHP-Umgebung und PHP-Version unterscheiden.

Was ist eine PHP-Binary? #

Eine PHP-Binary ist das ausführbare PHP-Programm, mit dem ein PHP-Skript über die Kommandozeile gestartet werden kann.

Bei einem Webaufruf verarbeitet der Webserver beziehungsweise die konfigurierte PHP-Umgebung die PHP-Datei. Ein Cronjob benötigt bei einem direkten CLI-Aufruf dagegen einen passenden ausführbaren PHP-Befehl.

Vereinfacht:

Browser-Aufruf:
Webserver → PHP → Skript

Cronjob:
PHP-Binary → Skript

PHP-Version des Cronjobs beachten #

Wenn deine Website eine bestimmte PHP-Version verwendet, solltest du bei einem PHP-Cronjob darauf achten, dass der ausgeführte PHP-Befehl zur Anwendung passt.

Die PHP-Version der Website und die PHP-Version eines Kommandozeilenaufrufs sind nicht automatisch dasselbe.

Wichtig: Ein über SSH ausgeführtes php -v beziehungsweise ein allgemeiner php-Befehl beweist nicht automatisch, dass genau dieselbe PHP-Version auch für deine Website oder deinen Cronjob verwendet wird.

Die PHP-Version deiner Domain verwaltest du bei CURIAWEB grundsätzlich über den MultiPHP-Manager.

Absolute Pfade verwenden #

Bei Cronjobs solltest du für Skripte und Dateien nach Möglichkeit absolute Pfade verwenden.

Ein absoluter Pfad beginnt beim Dateisystem und bezeichnet das Ziel eindeutig.

Beispielsweise schematisch:

/home/CPANELUSER/public_html/cron.php

Ein relativer Pfad wie:

cron.php

ist dagegen davon abhängig, aus welchem Arbeitsverzeichnis der Befehl ausgeführt wird.

Das kann bei automatischen Cron-Ausführungen zu unerwarteten Fehlern führen.

Webadresse und Dateisystempfad nicht verwechseln #

Eine URL wie:

https://example.com/cron.php

ist nicht dasselbe wie ein Dateisystempfad:

/home/CPANELUSER/public_html/cron.php

Eine URL bezeichnet eine Ressource über HTTP beziehungsweise HTTPS. Ein Dateisystempfad bezeichnet eine Datei direkt auf dem Server.

Welche Variante eine Anwendung benötigt, hängt von deren Dokumentation ab.

Wie finde ich den richtigen Dateipfad? #

Im cPanel-Dateimanager kannst du die Verzeichnisstruktur deines Hosting-Accounts nachvollziehen.

Wenn deine Domain beispielsweise einem bestimmten Document Root zugeordnet ist, befindet sich das auszuführende Skript innerhalb dieser Verzeichnisstruktur.

Verwende nicht automatisch public_html, wenn die betreffende Domain ein anderes Document Root besitzt.

Document Root einer zusätzlichen Domain beachten #

Bei mehreren Domains kann jede Website einem eigenen Verzeichnis zugeordnet sein.

Ein Cronjob für:

shop.example.com

muss deshalb nicht zwangsläufig auf eine Datei unter:

/public_html/

zeigen.

Prüfe den tatsächlichen Pfad der betreffenden Anwendung.

6. Cronjob hinzufügen #

Wenn Zeitplan und Befehl korrekt eingetragen sind, füge den neuen Cronjob hinzu.

Der Cronjob sollte anschließend in der Liste der bestehenden Cronjobs erscheinen.

Kontrolliere dort noch einmal:

  • Minute
  • Stunde
  • Tag
  • Monat
  • Wochentag
  • Befehl

7. Cronjob zunächst kontrolliert testen #

Bei einem neuen Cronjob solltest du nicht mehrere Tage warten, um festzustellen, ob der Befehl überhaupt funktioniert.

Wenn die Anwendung dies zulässt, kannst du für einen kontrollierten Test vorübergehend ein kürzeres Intervall verwenden.

Anschließend stellst du den Cronjob wieder auf den tatsächlich gewünschten Zeitplan.

Achtung: Verwende ein kurzes Testintervall nur, wenn der ausgeführte Prozess gefahrlos mehrfach gestartet werden kann. Ein Import, Versandprozess oder anderes veränderndes Skript darf nicht unkontrolliert mehrfach ausgeführt werden.

8. Ergebnis der Ausführung prüfen #

Wie du erkennst, ob der Cronjob erfolgreich war, hängt von der ausgeführten Anwendung ab.

Mögliche Kontrollmöglichkeiten sind:

  • Ausgabe des Cronjobs
  • E-Mail-Benachrichtigung
  • Logdatei der Anwendung
  • Zeitstempel einer erzeugten Datei
  • Status innerhalb der Anwendung
  • verarbeitete Datensätze

Ein vorhandener Eintrag in cPanel beweist lediglich, dass der Cronjob eingerichtet wurde – nicht, dass der ausgeführte Befehl erfolgreich arbeitet.

Ausgabe eines Cronjobs verstehen #

Ein Kommando kann normale Ausgaben und Fehlermeldungen erzeugen.

Unter Linux werden diese grundsätzlich als unterschiedliche Ausgabekanäle behandelt:

stdout
→ normale Standardausgabe

stderr
→ Fehlermeldungen

Diese Unterscheidung wird wichtig, wenn Ausgaben umgeleitet oder protokolliert werden sollen.

Ausgabe in eine Logdatei schreiben #

Für bestimmte eigene Skripte kann es sinnvoll sein, die Ausgabe in eine Datei umzuleiten.

Ein schematisches Beispiel:

BEFEHL >> /home/CPANELUSER/logs/cron.log 2>&1

Dabei bedeutet:

>>
→ Ausgabe an eine Datei anhängen

2>&1
→ Fehlerausgabe zur normalen Ausgabe umleiten

Verwende nur Pfade, die in deinem Hosting-Account existieren und beschreibbar sind.

Logdateien können sehr groß werden #

Wenn ein häufig ausgeführter Cronjob bei jedem Lauf mehrere Zeilen protokolliert, kann eine Logdatei mit der Zeit erheblich wachsen.

Kontrolliere selbst angelegte Cron-Logs deshalb regelmäßig beziehungsweise verwende eine geeignete Log-Rotation, wenn dies für deine Anwendung vorgesehen ist.

Ausgabe mit /dev/null unterdrücken #

In vielen Cron-Anleitungen findest du Konstruktionen wie:

BEFEHL > /dev/null 2>&1

/dev/null verwirft die dorthin umgeleitete Ausgabe.

Das kann bei einem stabil funktionierenden Cronjob sinnvoll sein, wenn du die Ausgabe bewusst nicht benötigst.

Achtung: Verwende /dev/null nicht reflexartig bei einem neuen oder fehlerhaften Cronjob. Du könntest genau die Fehlermeldung verwerfen, die du für die Diagnose benötigst.

Unterschied zwischen > und >> #

Bei der Umleitung in Dateien ist der Unterschied wichtig.

> schreibt die Ausgabe in eine Datei und ersetzt dabei grundsätzlich den bisherigen Inhalt.

>> hängt die neue Ausgabe grundsätzlich an die bestehende Datei an.

Beispiel:

BEFEHL > cron.log
→ Datei neu schreiben

BEFEHL >> cron.log
→ Ausgabe anhängen

Was bedeutet 2>&1? #

Die Schreibweise:

2>&1

weist die Fehlerausgabe an, dasselbe Ziel wie die Standardausgabe zu verwenden.

Damit können normale Meldungen und Fehlermeldungen gemeinsam in einer Logdatei landen oder gemeinsam verworfen werden.

HTTP-Aufruf über einen Cronjob #

Manche Anwendungen geben keinen direkten PHP-CLI-Befehl vor, sondern erwarten den regelmäßigen Aufruf einer URL.

Je nach Hosting-Umgebung und Vorgabe der Anwendung kann dafür beispielsweise ein Kommandozeilenwerkzeug zum Abruf einer HTTP-/HTTPS-Adresse verwendet werden.

Verwende in diesem Fall den von der Anwendung empfohlenen Befehl.

Wichtig: Ersetze einen von der Anwendung vorgesehenen CLI-Aufruf nicht ohne Grund durch einen HTTP-Aufruf oder umgekehrt. Beide Varianten können sich technisch unterschiedlich verhalten.

CLI-Aufruf und HTTP-Aufruf unterscheiden #

Bei einem direkten PHP-CLI-Aufruf wird das PHP-Skript über die Kommandozeile ausgeführt.

Bei einem HTTP-Aufruf wird dagegen eine Webadresse aufgerufen, ähnlich wie durch einen Browser oder anderen HTTP-Client.

Vereinfacht:

CLI:
Cron → PHP → Datei

HTTP:
Cron → HTTP/HTTPS → Webserver → Anwendung

Die Anwendung bestimmt, welche Variante vorgesehen ist.

Umgebungsvariablen eines Cronjobs können anders sein #

Ein Cronjob läuft nicht zwingend mit exakt derselben Umgebung wie eine interaktive SSH-Sitzung.

Insbesondere Suchpfade und andere Umgebungsvariablen können sich unterscheiden.

Deshalb kann ein Befehl in einer interaktiven Shell funktionieren, während derselbe verkürzte Befehl als Cronjob fehlschlägt.

Absolute Pfade zu Programmen und Dateien reduzieren solche Abhängigkeiten.

Cronjob benötigt Schreibrechte #

Wenn ein Skript Dateien erstellen, verändern oder löschen soll, benötigt der ausgeführte Prozess die entsprechenden Berechtigungen.

Ein Fehler beim Schreiben bedeutet deshalb nicht automatisch, dass der Cron-Zeitplan falsch ist.

Prüfe bei solchen Problemen:

  • Dateipfad
  • Verzeichnis
  • Dateiberechtigungen
  • Anwendungslogik

Grundlagen zu Dateiberechtigungen findest du unter Dateiberechtigungen 644 und 755 in cPanel richtig einstellen.

Cronjobs und PHP-Limits #

Ein PHP-Skript, das über einen Cronjob ausgeführt wird, kann anderen Rahmenbedingungen unterliegen als ein normaler Webseitenaufruf.

Wenn ein Cronjob wegen Speicherbedarf oder Laufzeit fehlschlägt, sollte deshalb zuerst geprüft werden, welche PHP-Umgebung den Befehl tatsächlich ausführt.

Die allgemeinen PHP-Limits einer Website behandeln wir unter PHP Memory Limit, Upload-Größe und Ausführungszeit einstellen.

Wichtig: Übertrage Werte aus der Web-PHP-Konfiguration nicht automatisch auf PHP-CLI. Entscheidend ist die PHP-Umgebung, die den Cron-Befehl tatsächlich ausführt.

Cronjobs und PHP-Erweiterungen #

Auch benötigte PHP-Erweiterungen können bei einem PHP-Skript eine Rolle spielen.

Wenn ein Skript über die Website funktioniert, über einen Cronjob jedoch eine fehlende PHP-Funktion meldet, sollte geprüft werden, ob der Cronjob tatsächlich dieselbe beziehungsweise eine kompatible PHP-Umgebung verwendet.

Weitere Informationen findest du unter PHP-Erweiterungen in cPanel aktivieren und verwalten.

WordPress WP-Cron und Server-Cron unterscheiden #

WordPress besitzt mit WP-Cron ein eigenes System für geplante Aufgaben.

WP-Cron ist jedoch kein klassischer Linux-Cronjob.

WordPress prüft geplante Aufgaben standardmäßig im Zusammenhang mit Website-Aufrufen.

Vereinfacht:

Besucher ruft WordPress auf
→ WordPress prüft geplante Aufgaben
→ fällige WP-Cron-Ereignisse können verarbeitet werden

Ein echter Server-Cronjob wird dagegen unabhängig von einem normalen Besucheraufruf durch den Server-Zeitplan gestartet.

Warum WP-Cron nicht minutengenau sein muss #

Wenn eine WordPress-Website wenig oder unregelmäßig besucht wird, können geplante WP-Cron-Aufgaben später als erwartet angestoßen werden.

WP-Cron ist deshalb nicht mit einem klassischen System-Cron gleichzusetzen, der nach einem festen Zeitplan ausgeführt wird.

WP-Cron durch echten Cronjob auslösen #

Bei bestimmten WordPress-Konfigurationen kann es sinnvoll sein, die Verarbeitung geplanter WordPress-Aufgaben regelmäßig über einen echten Server-Cronjob anzustoßen.

Das sollte jedoch bewusst eingerichtet werden.

Wird der normale WordPress-WP-Cron-Mechanismus deaktiviert, muss sichergestellt sein, dass die geplanten Aufgaben anschließend zuverlässig über den alternativen Mechanismus ausgelöst werden.

Achtung: Deaktiviere WP-Cron nicht einfach in wp-config.php, ohne vorher einen funktionierenden Ersatz eingerichtet und getestet zu haben. Andernfalls können geplante WordPress-Aufgaben ausbleiben.

DISABLE_WP_CRON verstehen #

In WordPress kann der normale Aufrufmechanismus von WP-Cron über eine Konstante in der Datei wp-config.php beeinflusst werden.

Eine entsprechende Konfiguration kann beispielsweise enthalten:

define( 'DISABLE_WP_CRON', true );

Damit sollte nur gearbeitet werden, wenn bewusst ein alternativer und funktionierender Mechanismus für die WordPress-Cron-Verarbeitung eingerichtet wird.

Die Änderung der Datei wp-config.php sollte vorab gesichert und sorgfältig durchgeführt werden.

WooCommerce und Cronjobs #

WooCommerce und WooCommerce-Erweiterungen verwenden zeitgesteuerte beziehungsweise Hintergrundaufgaben für verschiedene Prozesse.

Dazu können je nach Konfiguration beispielsweise geplante Aktionen, Benachrichtigungen, Synchronisationen oder andere Hintergrundprozesse gehören.

Ändere die Cron-Konfiguration eines produktiven WooCommerce-Shops deshalb nicht unüberlegt.

Häufigkeit passend zur Aufgabe wählen #

Ein Cronjob sollte nicht häufiger ausgeführt werden als technisch erforderlich.

Wenn eine Aufgabe nur einmal täglich benötigt wird, gibt es normalerweise keinen Grund, sie jede Minute zu starten.

Eine unnötig hohe Frequenz kann:

  • zusätzliche CPU-Zeit benötigen
  • PHP-Prozesse erzeugen
  • Datenbankabfragen auslösen
  • externe APIs belasten
  • zu überlappenden Ausführungen führen

Überlappende Cronjobs vermeiden #

Ein besonders wichtiger Fall entsteht, wenn ein Cronjob häufiger gestartet wird, als seine Ausführung dauert.

Beispiel:

Cronjob startet alle 5 Minuten
Ausführung dauert 8 Minuten

Dann kann die nächste Ausführung beginnen, obwohl die vorherige noch nicht beendet wurde.

Je nach Anwendung können dadurch mehrere identische Prozesse gleichzeitig laufen.

Achtung: Bei langen Importen, Synchronisationen oder rechenintensiven Aufgaben solltest du sicherstellen, dass das gewählte Intervall zur tatsächlichen Laufzeit passt beziehungsweise die Anwendung parallele Ausführungen verhindert.

Cronjobs und CloudLinux-Ressourcen #

Auch ein Cronjob verbraucht Hosting-Ressourcen.

Ein häufig ausgeführtes oder rechenintensives Skript kann beispielsweise CPU, Arbeitsspeicher, Prozesse oder Datenbankressourcen beanspruchen.

Wenn ein Cronjob regelmäßig mit hoher Last zusammenfällt, sollte seine Laufzeit und Frequenz überprüft werden.

Die Ressourcenauswertung behandeln wir unter CloudLinux Ressourcennutzung in cPanel verstehen.

Mehrere schwere Cronjobs nicht zur selben Minute starten #

Wenn du mehrere ressourcenintensive Aufgaben betreibst, kann es sinnvoll sein, deren Startzeiten zu verteilen.

Statt beispielsweise drei umfangreiche Prozesse alle um:

03:00

zu starten, können – sofern die Anwendungen dies erlauben – unterschiedliche Startzeiten verwendet werden.

Dadurch entstehen nicht unnötig mehrere Lastspitzen gleichzeitig.

Cronjob manuell testen #

Wenn du über SSH verfügst und den verwendeten Befehl sicher kennst, kann ein manueller Test hilfreich sein.

Damit lässt sich unterscheiden, ob:

  • der Befehl selbst fehlerhaft ist
  • oder nur die automatische Cron-Ausführung Probleme verursacht

Ein manueller Test sollte jedoch nur durchgeführt werden, wenn die betreffende Aufgabe gefahrlos erneut ausgeführt werden kann.

Manueller Test funktioniert, Cronjob nicht #

Wenn ein Befehl manuell funktioniert, als Cronjob aber nicht, solltest du insbesondere prüfen:

  • absolute Pfade
  • PHP-Binary
  • Umgebungsvariablen
  • Berechtigungen
  • Cron-Zeitplan
  • Ausgaben und Fehlermeldungen

Eine systematische Fehlersuche behandeln wir im Artikel Cronjob funktioniert nicht: Ursachen und Lösungen.

Cronjob wird scheinbar nicht ausgeführt #

Wenn eine Aufgabe nicht zum erwarteten Zeitpunkt ausgeführt wird, prüfe zuerst den Zeitplan.

Ein häufiger Fehler ist die Verwechslung von:

  • Minute und Stunde
  • Tag des Monats und Wochentag
  • lokaler Zeit und Serverzeit
  • Intervall und konkretem Zeitpunkt

Prüfe danach den Befehl selbst.

Cronjob läuft, Skript erzeugt aber Fehler #

In diesem Fall funktioniert möglicherweise die zeitgesteuerte Ausführung, während das eigentliche Skript fehlschlägt.

Das sind zwei unterschiedliche Ebenen:

Cron startet Befehl
→ funktioniert

Skript wird ausgeführt
→ erzeugt Fehler

Untersuche dann die Fehlermeldung des Skripts beziehungsweise dessen eigene Logdateien.

PHP-Fehler protokollieren #

Wenn ein PHP-Skript einen Fehler erzeugt, kann je nach Konfiguration eine entsprechende Protokollierung hilfreich sein.

Bei Website-Fehlern erklären wir die cPanel-Protokolle unter cPanel Error Log lesen und Website-Fehler finden.

Beachte jedoch, dass ein CLI-Cronjob nicht zwingend dieselben Logs und dieselbe PHP-Konfiguration wie ein normaler Webaufruf verwendet.

Cronjob bearbeiten #

Bestehende Cronjobs werden im cPanel-Cronjob-Bereich aufgelistet.

Wenn du einen Zeitplan oder Befehl ändern möchtest, kontrolliere vor der Änderung den bisherigen Eintrag.

Bei komplexeren Befehlen kann es sinnvoll sein, den alten Wert vorab zu kopieren beziehungsweise zu dokumentieren.

Cronjob löschen #

Wenn ein Cronjob nicht mehr benötigt wird, kannst du ihn über die entsprechende Funktion entfernen.

Prüfe vor dem Löschen, ob die zugehörige Anwendung den Cronjob weiterhin benötigt.

Achtung: Das Löschen eines Cronjobs löscht nicht automatisch die zugehörige Anwendung. Es kann aber dazu führen, dass deren geplante Hintergrundaufgaben nicht mehr ausgeführt werden.

Alte Cronjobs nach Website-Umzug prüfen #

Nach einer Migration oder einem Umbau des Hosting-Accounts solltest du vorhandene Cronjobs kontrollieren.

Absolute Pfade können sich durch einen Umzug ändern.

Ein alter Befehl kann beispielsweise noch auf ein Verzeichnis zeigen, das auf dem neuen Hosting nicht existiert.

Cronjobs nach PHP-Wechsel prüfen #

Wenn eine Anwendung auf eine andere PHP-Version umgestellt wird, solltest du auch PHP-basierte Cronjobs berücksichtigen.

Ein Cronjob mit einem fest eingetragenen PHP-Binary-Pfad kann weiterhin eine andere PHP-Version aufrufen als die Website.

Prüfe deshalb nach relevanten PHP-Änderungen, ob zeitgesteuerte PHP-Skripte weiterhin mit der vorgesehenen Umgebung laufen.

Sensible Daten nicht direkt in Cron-Befehle schreiben #

Vermeide es nach Möglichkeit, Passwörter, API-Schlüssel oder andere vertrauliche Zugangsdaten direkt in einen Cron-Befehl einzutragen.

Solche Informationen sollten entsprechend der jeweiligen Anwendung sicher konfiguriert werden.

Öffentlich erreichbare Cron-Skripte absichern #

Wenn ein Cronjob eine über das Web erreichbare URL aufruft, solltest du prüfen, ob diese URL von beliebigen Besuchern ebenfalls ausgelöst werden kann.

Bei sensiblen oder ressourcenintensiven Aufgaben kann eine Anwendung dafür eigene Schutzmechanismen vorsehen.

Verwende die vom jeweiligen Hersteller empfohlene Absicherung.

Beispiele für häufige Zeitpläne #

Gewünschte AusführungCron-Zeitplan
Jede Minute* * * * *
Alle 5 Minuten*/5 * * * *
Alle 15 Minuten*/15 * * * *
Zu Beginn jeder Stunde0 * * * *
Täglich um 03:00 Uhr0 3 * * *
Täglich um 03:30 Uhr30 3 * * *
Jeden Montag um 06:00 Uhr0 6 * * 1
Am 1. jedes Monats um 02:00 Uhr0 2 1 * *
Alle 6 Stunden zur vollen Stunde0 */6 * * *

Checkliste vor dem Speichern eines Cronjobs #

Kontrolliere vor dem Hinzufügen:

  • Ist das richtige Skript beziehungsweise Kommando eingetragen?
  • Verwendest du absolute Pfade?
  • Ist bei PHP-Skripten die passende PHP-Umgebung berücksichtigt?
  • Ist das Intervall wirklich erforderlich?
  • Kann die Aufgabe länger dauern als das Intervall?
  • Ist die relevante Zeitzone berücksichtigt?
  • Benötigst du die Ausgabe für die ersten Tests?
  • Kann die Aufgabe gefahrlos mehrfach ausgeführt werden?

Empfohlener Ablauf für einen neuen Cronjob #

  1. Prüfe die Dokumentation der verwendeten Anwendung.
  2. Notiere den benötigten Befehl und das empfohlene Intervall.
  3. Melde dich bei cPanel an.
  4. Öffne Erweiterte Optionen → Cronjobs.
  5. Prüfe die Einstellung für Cron-E-Mail-Ausgaben.
  6. Lege den gewünschten Zeitplan fest.
  7. Kontrolliere Minute, Stunde, Tag, Monat und Wochentag.
  8. Berücksichtige die für den Cronjob geltende Zeitzone.
  9. Trage den vollständigen Befehl ein.
  10. Verwende bei Dateien möglichst absolute Pfade.
  11. Prüfe bei PHP-Skripten die verwendete PHP-Binary.
  12. Unterdrücke Fehlermeldungen beim ersten Test nicht unnötig.
  13. Füge den Cronjob hinzu.
  14. Kontrolliere den gespeicherten Eintrag.
  15. Prüfe nach der ersten Ausführung, ob die Aufgabe erfolgreich abgeschlossen wurde.
  16. Stelle einen vorübergehend verkürzten Testzeitplan anschließend wieder auf das gewünschte Intervall zurück.

Wann solltest du den CURIAWEB-Support kontaktieren? #

Wenn ein Cronjob trotz korrektem Zeitplan nicht funktioniert und du die Ursache nicht feststellen kannst, dokumentiere den vorhandenen Eintrag möglichst genau.

Für eine Analyse sind insbesondere folgende Angaben hilfreich:

  • betroffene Domain beziehungsweise Anwendung
  • vollständiger Cron-Befehl ohne vertrauliche Zugangsdaten
  • eingestellter Zeitplan
  • erwarteter Ausführungszeitpunkt
  • tatsächlich beobachtetes Verhalten
  • verwendete PHP-Version beziehungsweise PHP-Binary, falls relevant
  • vollständige Fehlermeldung
  • ob der Befehl manuell funktioniert
  • ob der Cronjob früher bereits funktioniert hat

Übermittle keine Passwörter, API-Schlüssel oder andere vertrauliche Zugangsdaten.

Zusammenfassung #

Mit Cronjobs kannst du Befehle und Skripte auf deinem CURIAWEB-Webhosting automatisch nach einem festgelegten Zeitplan ausführen lassen. Du findest die Verwaltung unter Erweiterte Optionen → Cronjobs.

Ein Cronjob besteht aus fünf Zeitfeldern für Minute, Stunde, Tag, Monat und Wochentag sowie dem auszuführenden Befehl. Häufig verwendete Zeitpläne sind beispielsweise */5 * * * * für alle fünf Minuten oder 0 3 * * * für eine tägliche Ausführung um 03:00 Uhr.

Verwende für Skripte möglichst absolute Dateipfade und beachte bei PHP-Cronjobs, dass die PHP-Version eines Kommandozeilenaufrufs nicht automatisch mit der PHP-Version der Website identisch sein muss.

Unterdrücke Ausgaben und Fehlermeldungen eines neuen Cronjobs nicht vorschnell mit /dev/null. Sie sind bei der Einrichtung und Fehlersuche häufig die wichtigste Informationsquelle.

Achte außerdem darauf, einen Cronjob nicht häufiger auszuführen als erforderlich. Wenn eine Aufgabe länger läuft als ihr Ausführungsintervall, können mehrere Prozesse gleichzeitig entstehen und unnötig Hosting-Ressourcen beanspruchen.

Bei WordPress solltest du zusätzlich zwischen dem WordPress-eigenen WP-Cron und einem echten Server-Cronjob unterscheiden. Wenn WP-Cron deaktiviert wird, muss ein funktionierender alternativer Ausführungsmechanismus vorhanden sein.

Die wichtigste Regel lautet: Zeitplan, Befehl, Dateipfad und Ausführungsumgebung getrennt prüfen. Ein korrekt gespeicherter Cronjob bedeutet noch nicht automatisch, dass das aufgerufene Skript erfolgreich ausgeführt wird.

Letzte Aktualisierung August 28, 2026
War dieser Artikel hilfreich?
Inhalt