Websites
Einrichtung und Verwaltung von Cron Jobs
A cron job runs a command on a schedule, in the background, whether or not anyone is visiting your site. This guide covers adding one in KPanel, writing the schedule and the command correctly for…
Einrichten und Verwalten von Cron Jobs
Ein Cron Job führt einen Befehl nach einem Zeitplan im Hintergrund aus, unabhängig davon, ob jemand Ihre Website besucht oder nicht. Dieser Leitfaden behandelt das Hinzufügen eines Jobs in KPanel, das korrekte Schreiben des Zeitplans und des Befehls für diese Plattform, das Ersetzen von WordPresss unzuverlässiger integrierter Planung und das Finden der Ausgabe, wenn ein Job nicht das tut, was Sie erwartet haben.
Wo sich Cron in KPanel befindet
Cron gehört zu einer Website, daher greifen Sie über die Website darauf zu und nicht über das Hauptmenü:
- Melden Sie sich bei KPanel an und klicken Sie in der linken Seitenleiste auf Websites.
- Klicken Sie auf die gewünschte Website.
- Öffnen Sie im eigenen Menü der Website Advanced und dann Cron.
Die direkte Adresse ist /websites/<site-id>/cron. Sie sehen eine Tabelle mit vorhandenen Jobs oder eine leere Ansicht, wenn die Website keine besitzt.

Einen Job hinzufügen
Klicken Sie oben rechts auf Add Cron Job. Das Formular hat drei Felder.
Schedule
Sechs Voreinstellungsschaltflächen füllen den Ausdruck für Sie aus:
| Schaltfläche | Ausdruck |
|---|---|
| Every minute | * * * * * |
| Every 5 min | */5 * * * * |
| Every hour | 0 * * * * |
| Daily 2AM | 0 2 * * * |
| Weekly Sunday | 0 2 * * 0 |
| Monthly 1st | 0 2 1 * * |
Oder geben Sie Ihren eigenen Ausdruck in Cron expression ein. Die fünf Felder sind in der folgenden Reihenfolge: Minute, Stunde, Tag des Monats, Monat, Tag der Woche:
minute hour day-of-month month day-of-week
0 3 * * *läuft jeden Tag um 3:00 Uhr morgens.*/15 * * * *läuft alle fünfzehn Minuten.0 9 * * 1läuft jeden Montag um 9:00 Uhr morgens.30 1 1 * *läuft am ersten des Monats um 1:30 Uhr morgens.0 */6 * * *läuft alle sechs Stunden zur vollen Stunde.
Label
Ein Name, den Sie später wiedererkennen, wie WordPress cron oder Nightly stock sync. Dies ist das, was die Jobtabelle Ihnen anzeigt, also machen Sie es aussagekräftig: job 3 hilft um 2 Uhr morgens niemandem.
Command
Der Shell-Befehl, der ausgeführt werden soll. Klicken Sie auf Save, um den Job zu erstellen.
Verwenden Sie vollständige Pfade. Cron läuft mit einer minimalen Umgebung ohne Ihr Shell-Profil, daher schlägt ein bloßer php oder ein relativer Verzeichnisname, der bei SSH-Anmeldung funktioniert, hier still fehl. Schreiben Sie immer den gesamten Pfad aus.
Den Befehl schreiben
Jobs werden als Systembenutzer Ihrer Website ausgeführt, daher ist Ihr Home-Verzeichnis der richtige Ankerpunkt und ~ wird korrekt aufgelöst. Die Dateien Ihrer Website befinden sich unter:
~/htdocs/yourdomain.co.nz
Sie können den genauen Pfad in der Registerkarte Files der Website, dann SFTP bestätigen, wo er unter Site files gedruckt wird.
Typische Befehle:
cd ~/htdocs/yourdomain.co.nz && /usr/bin/wp cron event run --due-now
cd ~/htdocs/yourdomain.co.nz && /usr/bin/php bin/send-queued-emails.php
/usr/bin/curl -fsS https://yourdomain.co.nz/api/nightly-report
Testen Sie den Befehl, bevor Sie ihn planen. Fügen Sie ihn in den Bereich WordPress, dann Console der Website ein, wenn es ein wp-Befehl ist, oder führen Sie ihn über SSH aus. Ein Job, der niemals funktioniert hätte, ist an der Eingabeaufforderung viel leichter zu erkennen als um 3 Uhr morgens in einer Protokolldatei.
WordPresss integrierte Planung ersetzen
WordPress wird mit seinem eigenen Pseudo-Scheduler, WP-Cron, ausgeliefert, der nur aktiviert wird, wenn jemand eine Seite lädt. Auf einer ruhigen Website werden geplante Beiträge verzögert veröffentlicht und E-Mails bleiben unversendet. Auf einer stark besuchten Website zahlt jeder Besucher die Kosten für die Überprüfung des Zeitplans.
Ein echter Cron Job behebt beide Probleme. KPanel erledigt den gesamten Austausch für Sie:
- Öffnen Sie die Website und dann die Registerkarte WordPress.
- Öffnen Sie den Bereich WP-Cron.
- Klicken Sie auf Enable system cron.
Dies fügt einen Zeitplan hinzu, der WP-Cron alle fünf Minuten ausführt, und setzt DISABLE_WP_CRON, damit Seitenladezeiten nicht mehr auslösen. Remove system cron auf demselben Bildschirm macht beide Teile rückgängig.
Wenn Sie es lieber manuell tun möchten, sind es zwei Schritte:
Deaktivieren Sie die besucherausgelöste Version. Fügen Sie dies in wp-config.php über der /* That's all, stop editing! */-Zeile hinzu, indem Sie Files und dann File Manager verwenden:
define( 'DISABLE_WP_CRON', true );
Fügen Sie den echten Job hinzu. Unter Advanced, dann Cron:
- Schedule:
*/5 * * * * - Label:
WordPress cron - Command:
cd ~/htdocs/yourdomain.co.nz && /usr/bin/wp cron event run --due-now
Überspringen Sie nicht den DISABLE_WP_CRON-Teil. Wenn beide laufen, kann jede geplante Aufgabe zweimal aktiviert werden: doppelte E-Mails, doppelte Bestellungsverarbeitung, doppelte Gebühren bei einem Abonnement-Plugin. Verwenden Sie die Aktion mit einem Klick im WP-Cron-Bereich und dies kann Ihnen nicht passieren.
WooCommerce und Background Queues
WooCommerce verwendet eine Background Queue für Bestellungsstatusänderungen, Abonnementverlängerungen, E-Mails und Lagerbestandsaktualisierungen. Es ist auf WP-Cron angewiesen, daher ist es genau die Workload, die auf einem ruhigen Geschäft leidet.
Sobald der echte Zeitplan aktiviert ist, wird die Queue alle fünf Minuten verarbeitet. Überwachen Sie sie unter WooCommerce, dann Status, dann Scheduled Actions in wp-admin.
Ein hochvolumiger Shop kann zu */2 * * * * übergehen. Unter diesen Wert zu gehen hilft selten: Sie verbringen mehr Zeit mit dem Starten von Prozessen als mit der Arbeit. Siehe Setting Up WooCommerce.
Vorhandene Jobs verwalten
Die Jobtabelle zeigt Label, Schedule, Command, Last run und Status mit zwei Aktionen in jeder Zeile:
- Disable pausiert einen Job, ohne ihn zu löschen, und verwandelt sich in Enable, um ihn zurückzubringen. Verwenden Sie dies, wenn Sie testen, ob ein Job ein Problem verursacht.
- Delete entfernt ihn dauerhaft. Sie werden aufgefordert zu bestätigen, und geplante Läufe werden sofort beendet.
Das Löschen eines Cron Jobs kann nicht rückgängig gemacht werden. Der Zeitplan wird sofort vom Server entfernt. Wenn Sie ihn nur vorübergehend stoppen möchten, verwenden Sie Disable.
Die Ausgabe finden
Jeder Job, den Kapsule erstellt, hat seine Ausgabe erfasst. Standardausgabe und Fehler werden an eine Protokolldatei in einem cron-logs-Verzeichnis im Home-Verzeichnis des Website-Benutzers angehängt, eine Datei pro Job.
Dieses Protokoll beantwortet fast jede Frage „wurde mein Job ausgeführt?", da es aufzeichnet, was der Befehl gedruckt hat und welcher Fehler aufgetreten ist.
Um es zu lesen, verbinden Sie sich über SSH und suchen Sie in ~/cron-logs/. SSH verwendet Schlüsselauthentifizierung, daher fügen Sie zuerst Ihren öffentlichen Schlüssel über die Registerkarte Files, dann SSH Keys der Website hinzu: siehe Adding SSH Keys.
Der File Manager und SFTP-Konten sind auf Ihr Site-Verzeichnis ~/htdocs/yourdomain.co.nz beschränkt, und cron-logs befindet sich eine Ebene darüber. Das ist beabsichtigt: Es hält einen Auftragnehmer mit SFTP-Zugriff von allem außer der Website fern. Verwenden Sie natives SSH, um die Protokolle zu erreichen, oder leiten Sie die Ausgabe wie unten gezeigt in Ihr Website-Verzeichnis um.
Wenn Sie die Ausgabe lieber an einem Ort haben möchten, den der File Manager öffnen kann, leiten Sie sie selbst um:
cd ~/htdocs/yourdomain.co.nz && /usr/bin/wp cron event run --due-now >> ~/htdocs/yourdomain.co.nz/wp-content/cron.log 2>&1
2>&1 sendet Fehler in dieselbe Datei wie normale Ausgabe. Ohne dies gehen Fehler ins Nirgendwo.
Alles in Ihrem Site-Verzeichnis kann potenziell über das Web angefordert werden. Legen Sie ein umgeleitetes Protokoll unter wp-content statt in der Site-Root ab, geben Sie ihm einen Namen, den niemand erraten würde, und löschen Sie es, sobald Sie mit dem Debugging fertig sind.
Best Practice
- Versetzen Sie Ihre Zeitpläne. Sechs Jobs, die alle auf
0 2 * * *eingestellt sind, starten alle auf einmal. Spreizen Sie sie:0 2,10 2,20 2. - Verwenden Sie nicht jede Minute, es sei denn, Sie benötigen es wirklich.
*/5reicht für fast alles aus, einschließlich WordPress und WooCommerce. - Halten Sie Jobs kurz. Ein Job, der länger dauert als sein Intervall, überlappt sich mit dem nächsten Lauf.
- Leiten Sie die Ausgabe für alles Laute um, damit ein geschwätziger Job Ihren Disk nicht füllt.
- Überprüfen Sie die Liste gelegentlich. Jobs, die von einem gelöschten Plugin übrig bleiben, werden weiter ausgeführt.
Fehlerbehebung
Der Job scheint nie ausgeführt zu werden. Überprüfen Sie zunächst den Pfad. Öffnen Sie die Protokolldatei. Bestätigen Sie dann, dass der Status Active ist und nicht Disabled. Führen Sie dann denselben Befehl über SSH aus und sehen Sie, was er sagt.
„command not found" im Protokoll. Ein fehlender vollständiger Pfad. Verwenden Sie /usr/bin/php, /usr/bin/wp, /usr/bin/curl statt des bloßen Namens.
Permission denied. Der Job wird als Systembenutzer Ihrer Website ausgeführt. Dieser Benutzer muss alles, was der Befehl berührt, besitzen oder zumindest lesen können. Überprüfen Sie die Berechtigungen in Using the File Manager.
WordPress-Aufgaben werden immer noch verspätet ausgeführt. Bestätigen Sie, dass beide Teile des Austauschs vorhanden sind: Der Zeitplan existiert unter Advanced, dann Cron, und DISABLE_WP_CRON ist gesetzt. Der Bereich WP-Cron auf der Registerkarte WordPress zeigt den aktuellen Status beider.
Der Job wird ausgeführt, aber die Website ist dabei langsam. Verschieben Sie ihn zu einer ruhigeren Zeit, oder teilen Sie die Arbeit in kleinere Batches auf. Die Ressourcennutzung auf Website-Ebene ist unter Performance sichtbar: siehe Improving Website Speed.
Ein Job hat nach einer Plugin-Aktualisierung nicht mehr funktioniert. Der Befehlspfad könnte sich geändert haben. Überprüfen Sie das Protokoll und aktualisieren Sie dann den Befehl aus der Jobtabelle, indem Sie den alten Job löschen und einen korrigierten hinzufügen.