Cronjob einrichten: Aufgaben auf dem Server zeitgesteuert ausführen
Ein Cronjob ist ein Auftrag, den der Server zu festen Zeiten selbstständig ausführt: jede Nacht eine Sicherung, alle 15 Minuten geplante Beiträge veröffentlichen, einmal pro Stunde die Statistik auswerten. Wer einen Cronjob einrichten will, braucht dafür nur das Kundenmenü des Hosters und eine Zeitangabe in einem etwas eigenwilligen Format. Stellen Sie sich einen Wecker vor, der zur eingestellten Zeit klingelt und dem Server eine Aufgabe nennt.
Für eine normale WordPress-Seite müssen Sie meist gar nichts tun. Wichtig wird das Thema, wenn geplante Beiträge zu spät erscheinen oder ein Plugin ausdrücklich einen Cronjob verlangt. Dann kann auch der Support des Hosters oder Ihr Webdesigner die Aufgabe in wenigen Minuten anlegen.
Wofür Cronjobs gebraucht werden
Einen Cronjob einrichten lohnt sich überall dort, wo Anwendungen Arbeiten im Hintergrund erledigen, die nicht an einen Besuch gebunden sein sollen. Typische Beispiele:
- geplante Beiträge in WordPress pünktlich veröffentlichen,
- Sicherungen anlegen und alte löschen,
- die Auswertung einer Statistik wie Matomo, wie unter Statistik ohne Cookies beschrieben,
- Erinnerungsmails im Shop oder Newsletter versenden,
- temporäre Dateien und alte Protokolle aufräumen.
Das Zeitformat verstehen
Die Zeitangabe eines Cronjobs besteht aus fünf Feldern, getrennt durch Leerzeichen. Jedes Feld steht für eine Zeiteinheit.
Ein Stern steht für jeden Wert. Mit einem Schrägstrich legen Sie Abstände fest, mit einem Komma mehrere Werte und mit einem Bindestrich Bereiche. So bedeutet 1-5 im Feld für den Wochentag Montag bis Freitag.
Achten Sie auf die Zeitzone. Viele Server laufen in koordinierter Weltzeit, kurz UTC. Sie liegt im Winter eine und im Sommer zwei Stunden hinter der deutschen Zeit. Steht im Kundenmenü keine Angabe dazu, fragen Sie beim Hoster nach oder prüfen Sie den ersten Lauf.
Cronjob einrichten im Kundenmenü
In Plesk heißt der Bereich „Geplante Aufgaben“, in anderen Oberflächen „Cronjobs“ oder „Zeitgesteuerte Aufgaben“. Meist gibt es drei Arten von Aufgaben.
Eine Adresse aufrufen: Der Server ruft regelmäßig eine Adresse auf, auch URL genannt, so als würde jemand sie im Browser öffnen. Das ist die einfachste Variante und funktioniert auch ohne Wissen über Pfade auf dem Server.
Ein PHP-Skript ausführen: Sie geben den Pfad zur Datei an, also ihren Ort auf dem Webspace, und wählen die PHP-Version. Das ist schneller und zuverlässiger als der Umweg über eine Adresse.
Einen Befehl ausführen: Für alles andere, etwa Kommandos der WordPress-Kommandozeile oder eigene Skripte. Bei Plesk liegen die PHP-Versionen dafür meist unter einem Pfad wie /opt/plesk/php/ gefolgt von der Versionsnummer.
Wollen Sie auf einem eigenen Server ohne Verwaltungsoberfläche einen Cronjob einrichten, tragen Sie die Aufgabe mit crontab -e direkt ein. Das Format ist dasselbe: fünf Zeitfelder, dann der Befehl. Bei einem Spieleserver laufen so oft der nächtliche Neustart und die Sicherung der Spielwelt.
Wichtig: Die PHP-Version eines Cronjobs ist unabhängig von der Version Ihrer Website. Wer die Version der Website umstellt, sollte die Cronjobs mitziehen. Mehr dazu unter PHP Version wechseln.
WP-Cron durch einen echten Cronjob ersetzen
WordPress hat eine eigene Zeitsteuerung namens WP-Cron. Sie ist kein echter Cronjob, sondern läuft nur, wenn jemand die Seite aufruft.
Auf einer Seite mit wenigen Besuchern erscheinen geplante Beiträge dadurch zu spät. Nächtliche Sicherungen laufen erst, wenn morgens der erste Besucher kommt. Auf einer viel besuchten Seite prüft WordPress dagegen ständig, ob etwas zu tun ist. Ein echter Cronjob löst beides. Die Umstellung braucht drei Schritte:
- Tragen Sie in der wp-config.php diese Zeile ein:
define( 'DISABLE_WP_CRON', true ); - Legen Sie im Kundenmenü eine geplante Aufgabe für alle 15 Minuten an. Sie ruft die Adresse
https://www.ihre-domain.de/wp-cron.php?doing_wp_cronauf oder führt die Datei wp-cron.php mit PHP aus. - Prüfen Sie nach einer Stunde, ob geplante Beiträge und Sicherungen pünktlich laufen.
Ist die WordPress-Kommandozeile installiert, geht es auch mit dem Befehl wp cron event run --due-now im Ordner der Installation. Welche Aufgaben anstehen, zeigt wp cron event list. Ohne Kommandozeile hilft der Website-Zustand unter Werkzeuge. Er meldet, wenn ein geplantes Ereignis verspätet ist.
Benachrichtigungen und Ausgaben
Viele Cronjobs schicken nach jedem Lauf eine Mail mit ihrer Ausgabe. Bei einer Aufgabe alle 15 Minuten wird das schnell lästig. Die meisten Kundenmenüs bieten an, nur bei Fehlern zu benachrichtigen. Das ist die beste Einstellung: Sie hören nichts, solange alles läuft, und bekommen eine Nachricht, wenn etwas schiefgeht.
Wer gar keine Mails möchte, hängt an den Befehl >/dev/null 2>&1 an. Dann verschwindet jede Ausgabe, auch jede Fehlermeldung. Besser ist meist ein Protokoll in einer Datei, etwa mit >> ~/logs/cron.log 2>&1 am Ende des Befehls.
Dauert ein Lauf länger als der Abstand bis zum nächsten, laufen zwei gleichzeitig. Bei Sicherungen kann das Daten beschädigen. Auf Linux verhindert das der Befehl flock, der einen zweiten Start abbricht, solange der erste noch läuft: flock -n /tmp/sicherung.lock befehl.
Ob ein wichtiger Cronjob überhaupt noch läuft, verrät eine solche Mail allerdings nicht. Dafür eignet sich ein Lebenszeichen an ein Monitoring, das Alarm schlägt, wenn die Meldung ausbleibt. Wie das funktioniert, steht unter Website Monitoring.
Cronjob einrichten: häufige Fragen und Stolpersteine
Fast alle Probleme mit Cronjobs zeigen sich erst, wenn eine erwartete Wirkung ausbleibt.
Wie oft darf ein Cronjob laufen?
Das legt der Hoster fest. Bei kleinen Paketen sind sehr kurze Abstände oft nicht erlaubt. Für die meisten Aufgaben reichen 15 Minuten oder weniger häufige Läufe völlig.
Mein Cronjob läuft, aber nichts passiert. Woran liegt das?
Meist stimmt der Pfad nicht, oder das Skript erwartet, im Ordner der Anwendung gestartet zu werden. Lassen Sie sich die Ausgabe einmal per Mail schicken. Die Fehlermeldung zeigt fast immer die Ursache.
Kann jeder meine Cron-Adresse aufrufen?
Ja, wenn die Aufgabe über eine öffentliche Adresse ausgelöst wird. Für wp-cron.php ist das unproblematisch. Eigene Skripte, die etwas Wichtiges tun, schützen Sie mit einem geheimen Zusatz in der Adresse, den nur Sie kennen. Oder Sie führen sie direkt als PHP-Skript aus.
Laufen Cronjobs nach einem Umzug weiter?
Nein. Geplante Aufgaben sind eine Einstellung beim Hoster und ziehen nicht automatisch mit um. Notieren Sie sie vorher. Beim neuen Anbieter müssen Sie jeden Cronjob einrichten wie beim ersten Mal.
Ein Logbuch für geplante Aufgaben
Cronjobs sind unsichtbar. Sie laufen jahrelang, bis jemand sie vergisst und sich wundert, warum etwas nicht mehr passiert. Führen Sie deshalb eine kurze Liste mit einer Zeile pro Aufgabe:
- was die Aufgabe tut und für welche Anwendung,
- wann sie läuft, mit der Zeitangabe,
- welche PHP-Version oder welcher Befehl verwendet wird,
- wer sie eingerichtet hat und wann,
- an wen Fehlermeldungen gehen.
Diese Liste brauchen Sie bei jedem Umzug, jedem PHP-Wechsel und jeder Übergabe an andere. Wer mehrere Kundenserver betreut, legt sie in die gemeinsame Dokumentation des Teams. Und für die wichtigste Aufgabe, die Sicherung, lohnt sich ein zusätzlicher Wächter: jetzt ein Monitoring mit Lebenszeichen einrichten.