Zum Inhalt springen
Inhalt
Websites

Cronjobs einrichten und verwalten

Maschinelle Übersetzung. Das englische Original ist verfügbar.

A cron job führt einen Befehl nach einem Zeitplan im Hintergrund aus, unabhängig davon, ob jemand Ihre Website besucht. 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 WordPress' unzuverlässigem eingebauten Scheduler sowie das Auffinden 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 erreichen Sie es über die Website und nicht über das Hauptmenü:

  1. Melden Sie sich bei KPanel an und klicken Sie in der linken Seitenleiste auf Websites.
  2. Klicken Sie auf die gewünschte Website.
  3. Öffnen Sie im eigenen Menü der Website Einstellungen und dann Cron.

Die direkte Adresse lautet /websites/<site-id>/cron. Sie sehen eine Tabelle mit bestehenden Jobs oder, falls die Website noch keine hat, einen leeren Zustand.

Die Cron-Seite für eine Website in KPanel, auf der die geplanten Jobs dieser Website aufgelistet sind

Einen Job hinzufügen

Klicken Sie oben rechts auf Cron-Job hinzufügen. Das Formular hat drei Felder.

Zeitplan

Sechs voreingestellte Schaltflächen füllen den Ausdruck für Sie aus:

SchaltflächeAusdruck
Jede Minute* * * * *
Alle 5 Min.*/5 * * * *
Jede Stunde0 * * * *
Täglich 2 Uhr0 2 * * *
Wöchentlich Sonntag0 2 * * 0
Monatlich 1.0 2 1 * *

Oder geben Sie Ihren eigenen Ausdruck in Cron-Ausdruck ein. Die fünf Felder lauten in dieser Reihenfolge: Minute, Stunde, Tag des Monats, Monat, Wochentag:

minute  hour  day-of-month  month  day-of-week
  • 0 3 * * * läuft jeden Tag um 3:00 Uhr.
  • */15 * * * * läuft alle fünfzehn Minuten.
  • 0 9 * * 1 läuft jeden Montag um 9:00 Uhr.
  • 30 1 1 * * läuft am Ersten jedes Monats um 1:30 Uhr.
  • 0 */6 * * * läuft alle sechs Stunden, jeweils zur vollen Stunde.

Bezeichnung

Ein Name, den Sie später wiedererkennen, zum Beispiel WordPress cron oder Nightly stock sync. Er wird Ihnen in der Jobtabelle angezeigt, machen Sie ihn also aussagekräftig: job 3 hilft niemandem um 2 Uhr nachts.

Befehl

Der auszuführende Shell-Befehl. Klicken Sie auf Save, um den Job zu erstellen.

Verwenden Sie vollständige Pfade. Cron läuft mit einer minimalen Umgebung und ohne Ihr Shell-Profil, sodass ein nackter php oder ein relatives Verzeichnis, das funktioniert, wenn Sie über SSH angemeldet sind, hier stillschweigend fehlschlägt. Schreiben Sie jedes Mal den vollständigen Pfad aus.

Den Befehl schreiben

Jobs laufen unter dem eigenen Systembenutzer Ihrer Website, daher ist Ihr Home-Verzeichnis der richtige Ankerpunkt, und ~ wird korrekt aufgelöst. Die Dateien Ihrer Website befinden sich unter:

~/htdocs/yourdomain.co.nz

Den genauen Pfad können Sie auf dem Tab Einstellungen und dann SFTP der Website bestätigen, wo er unter Website-Dateien angezeigt 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 und dann Console der Website ein, wenn es sich um einen wp-Befehl handelt, oder führen Sie ihn über SSH aus. Ein Job, der ohnehin nie funktioniert hätte, lässt sich an der Eingabeaufforderung viel leichter erkennen als um 3 Uhr nachts in einer Protokolldatei.

Ersetzen von WordPress' eingebautem Scheduler

WordPress wird mit seinem eigenen Pseudo-Scheduler, WP-Cron, ausgeliefert, der nur ausgelöst wird, wenn jemand eine Seite lädt. Auf einer ruhigen Website werden geplante Beiträge zu spät veröffentlicht und E-Mails stauen sich unversendet. Auf einer stark frequentierten Website zahlt jeder Besucher die Kosten für die Überprüfung des Zeitplans.

Ein echter cron job behebt beides. KPanel übernimmt den gesamten Wechsel für Sie:

  1. Öffnen Sie die Website und dann den Tab WordPress.
  2. Öffnen Sie den Bereich WP-Cron.
  3. Klicken Sie auf System-Cron aktivieren.

Das fügt einen Zeitplan hinzu, der WP-Cron alle fünf Minuten ausführt, und setzt DISABLE_WP_CRON, sodass Seitenaufrufe es nicht mehr zusätzlich auslösen. System-Cron entfernen auf demselben Bildschirm macht beide Teile wieder rückgängig.

Wenn Sie es lieber manuell erledigen möchten, sind es zwei Schritte:

Die besucherausgelöste Version deaktivieren. Fügen Sie dies zu wp-config.php hinzu, oberhalb der Zeile /* That's all, stop editing! */, mithilfe von Einstellungen und dann Dateimanager:

define( 'DISABLE_WP_CRON', true );

Den echten Job hinzufügen. Unter Einstellungen und dann Cron:

  • Zeitplan: */5 * * * *
  • Bezeichnung: WordPress cron
  • Befehl: cd ~/htdocs/yourdomain.co.nz && /usr/bin/wp cron event run --due-now

Überspringen Sie nicht die DISABLE_WP_CRON-Hälfte. Wenn beide laufen, kann jede geplante Aufgabe doppelt ausgelöst werden: doppelte E-Mails, doppelte Bestellverarbeitung, doppelte Abbuchungen bei einem Abonnement-Plugin. Verwenden Sie die Ein-Klick-Aktion im WP-Cron-Bereich, dann kann Ihnen das nicht passieren.

WooCommerce und Hintergrundwarteschlangen

WooCommerce verwendet eine Hintergrundwarteschlange für Bestellstatusänderungen, Abonnementverlängerungen, E-Mails und Lagerbestandsaktualisierungen. Es stützt sich auf WP-Cron und ist damit genau die Arbeitslast, die auf einem ruhigen Shop leidet.

Sobald der echte Zeitplan eingerichtet ist, wird die Warteschlange alle fünf Minuten verarbeitet. Beobachten Sie dies unter WooCommerce, dann Status, dann Scheduled Actions im wp-admin.

Ein Shop mit hohem Volumen kann auf */2 * * * * umsteigen. Darunter zu gehen hilft selten: Sie verbringen mehr Zeit mit dem Starten von Prozessen als mit der eigentlichen Arbeit. Siehe Einrichten von WooCommerce.

Bestehende Jobs verwalten

Die Jobtabelle zeigt Label, Schedule, Command, Letzte Ausführung und Status, mit zwei Aktionen pro Zeile:

  • Disable pausiert einen Job, ohne ihn zu löschen, und wird zu Enable, um ihn wieder zu aktivieren. Verwenden Sie dies, wenn Sie testen, ob ein Job ein Problem verursacht.
  • Delete entfernt ihn dauerhaft. Sie werden zur Bestätigung aufgefordert, und geplante Ausführungen stoppen sofort.

Das Löschen eines cron job kann nicht rückgängig gemacht werden. Der Zeitplan wird sofort vom Server entfernt. Wenn Sie ihn nur vorübergehend anhalten möchten, verwenden Sie Disable.

Die Ausgabe finden

Bei jedem Job, den KapsuleHost erstellt, wird die Ausgabe für Sie 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 der Art „Wurde mein Job ausgeführt?", denn es zeichnet auf, was der Befehl ausgegeben hat und welchen Fehler er gegebenenfalls verursacht hat.

Um es zu lesen, verbinden Sie sich über SSH und schauen Sie in ~/cron-logs/. SSH verwendet eine Schlüssel-Authentifizierung, fügen Sie daher zuerst Ihren öffentlichen Schlüssel über den Tab Einstellungen und dann SSH-Schlüssel der Website hinzu: siehe Hinzufügen von SSH-Schlüsseln.

Der Dateimanager und die SFTP-Konten sind auf Ihr Website-Verzeichnis beschränkt, ~/htdocs/yourdomain.co.nz, und cron-logs liegt eine Ebene darüber. Das ist Absicht: Es hält einen Auftragnehmer mit SFTP-Zugriff von allem außer der Website fern. Nutzen Sie natives SSH, um auf die Protokolle zuzugreifen, 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 Dateimanager ö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 die normale Ausgabe. Ohne diesen Zusatz gehen Fehler ins Leere.

Alles innerhalb Ihres Website-Verzeichnisses kann potenziell über das Web abgerufen werden. Legen Sie ein umgeleitetes Protokoll unter wp-content ab statt im Stammverzeichnis der Website, geben Sie ihm einen Namen, den niemand erraten würde, und löschen Sie es, sobald Sie mit der Fehlersuche fertig sind.

Gute Praxis

  • Staffeln Sie Ihre Zeitpläne. Sechs Jobs, die alle auf 0 2 * * * gesetzt sind, starten alle gleichzeitig. Verteilen Sie sie: 0 2, 10 2, 20 2.
  • Verwenden Sie „jede Minute" nicht, außer Sie benötigen es wirklich. */5 reicht für fast alles, einschließlich WordPress und WooCommerce.
  • Halten Sie Jobs kurz. Ein Job, der länger als sein Intervall dauert, überschneidet sich mit dem nächsten Durchlauf.
  • Leiten Sie die Ausgabe bei allem Lauten um, damit ein geschwätziger Job nicht Ihre Festplatte füllt.
  • Überprüfen Sie die Liste gelegentlich. Jobs, die von einem entfernten Plugin zurückgeblieben sind, laufen weiter.

Fehlerbehebung

Der Job scheint nie zu laufen. Prüfen Sie zuerst den Pfad. Öffnen Sie die Protokolldatei. Bestätigen Sie dann, dass der Status Active und nicht Disabled ist. Führen Sie dann denselben Befehl über SSH aus und sehen Sie, was er ausgibt.

„command not found" im Protokoll. Ein fehlender vollständiger Pfad. Verwenden Sie /usr/bin/php, /usr/bin/wp, /usr/bin/curl anstelle des nackten Namens.

Zugriff verweigert. Der Job läuft unter dem Systembenutzer Ihrer Website. Dieser Benutzer muss alles, was der Befehl berührt, besitzen oder zumindest lesen können. Überprüfen Sie die Berechtigungen unter Verwendung des Dateimanagers.

WordPress-Aufgaben laufen immer noch zu spät. Bestätigen Sie, dass beide Hälften des Wechsels vorhanden sind: Der Zeitplan existiert unter Einstellungen und dann Cron, und DISABLE_WP_CRON ist gesetzt. Der Bereich WP-Cron im Tab WordPress zeigt den aktuellen Status beider an.

Der Job läuft, aber die Website ist währenddessen langsam. Verschieben Sie ihn auf eine ruhigere Stunde oder teilen Sie die Arbeit in kleinere Abschnitte auf. Die Ressourcennutzung auf Website-Ebene ist unter Leistung sichtbar: siehe Verbesserung der Website-Geschwindigkeit.

Ein Job hat nach einem Plugin-Update aufgehört zu funktionieren. Der Befehlspfad könnte sich geändert haben. Überprüfen Sie das Protokoll und aktualisieren Sie dann den Befehl in der Jobtabelle, indem Sie den alten Job löschen und einen korrigierten hinzufügen.

War das hilfreich?

Sind Sie eine KI? Diese Seite als Markdown lesen

Verwandte Artikel

Verbindung über SFTP: FileZilla, Cyberduck und KommandozeileSFTP (Secure File Transfer Protocol) gibt dir direkten Zugriff auf die Dateien deiner Website auf dem Server.…SSL-Zertifikate und HTTPSDieser Artikel erklärt in einfachen Worten, was SSL ist, wie KapsuleHost SSL für Ihre Websites automatisch verwaltet und was zu tun ist, wenn bei Ihrem…Websites: Wo soll man anfangenWie Website-Hosting bei KapsuleHost funktioniert, was sich auf welchem Tab einer Website befindet, und welche Anleitung für die jeweilige Aufgabe die richtige…Website-Uptime-ÜberwachungJede Website bei KapsuleHost wird automatisch alle 60 Sekunden überprüft, und der Tab Uptime zeigt Ihnen das Ergebnis: aktuellen Status, Uptime-Prozentsatz,…

Kommen Sie nicht weiter?

Fragen Sie Kora, die Ihr Konto kennt, oder wenden Sie sich an unser Team.

KontaktSupport kontaktieren