Entwicklung und Datenbanken
Cron-Jobs in cPanel erstellen und ausführen
Ein Cron-Job führt einen Befehl in dem Intervall aus, das Sie festlegen. Damit planen Sie Aktionen wie das Abarbeiten einer Warteschlange, das Erstellen eines Berichts oder die Wartung einer Anwendung.
Cron-Jobs lassen sich zwar auch im Terminal verwalten (Befehl crontab), der Bereich Cron-Jobs in cPanel macht die Einrichtung aber über eine einfache Oberfläche leicht.
E-Mail-Adresse für Benachrichtigungen
An diese Adresse sendet cron die Standardausgabe und die Fehler des Befehls. Erzeugt der Job keine Ausgabe, erhalten Sie keine Nachricht, die jede Ausführung bestätigt.
Neue Jobs hinzufügen
Verwenden Sie unter cPanel > Cron-Jobs die Option Neuen Cron-Job hinzufügen. Wählen Sie eine gängige Einstellung oder füllen Sie Minute, Stunde, Tag des Monats, Monat und Wochentag aus. Geben Sie dann den Befehl ein und speichern Sie.
Im Feld Befehl tragen Sie ein, was ausgeführt werden soll. Haben Sie zum Beispiel in public_html eine Datei cron.php, die Wartungsaufgaben erledigt, geben Sie Folgendes an:
cd /home/usuario_cpanel/public_html && /opt/alt/php83/usr/bin/php cron.php >> /home/usuario_cpanel/cron.php.log 2>&1
Das Beispiel verwendet PHP 8.3: Prüfen Sie, ob diese Version existiert und kompatibel ist. Verwenden Sie immer den vollständigen PHP-Pfad Ihrer Anwendung: /usr/local/bin/php oder nur php können eine andere Version mit anderen Erweiterungen sein. cd legt das Arbeitsverzeichnis für Skripte mit relativen Pfaden fest; && verhindert, dass sie aus einem anderen Ordner laufen, wenn der Verzeichniswechsel scheitert. Das Beispiel schreibt die Ausgabe in ein Log, damit keine Fehler verloren gehen. Prüfen und rotieren Sie diese Datei: Alles nach /dev/null umzuleiten verhindert zwar die E-Mails, verbirgt aber auch jeden Fehler des Jobs.
Eine URL per Cron aufrufen
Stellt eine Anwendung eine URL für geplante Aufgaben bereit, können Sie sie mit curl aufrufen:
curl --fail --silent --show-error --max-time 300 https://ihredomain.com/ruta-de-cron
Behalten Sie bei den ersten Tests die Diagnoseausgabe bei und prüfen Sie das Ergebnis des Jobs in der Anwendung. Die E-Mail enthält die Ausgabe, nicht unbedingt den Rückgabewert. Sobald Sie sicher sind, dass es funktioniert, können Sie die Ausgabe in ein privates Log schreiben. Legen Sie vorher den Zielordner mit passenden Berechtigungen an:
curl --fail --silent --show-error --max-time 300 https://ihredomain.com/ruta-de-cron >> /home/usuario_cpanel/logs/cron-url.log 2>&1
Besser ist es, direkt den PHP- oder CLI-Befehl der Anwendung auszuführen, wenn es einen gibt: Das spart DNS, SSL und eine komplette Webanfrage. Setzen Sie keine Passwörter oder dauerhaften Tokens in eine URL, die in Verläufen und Logs gespeichert werden kann.
Wählen Sie ein Intervall, das länger ist als die maximale Laufzeit. Dauert ein Aufruf fünf Minuten und planen Sie jede Minute einen weiteren, können sich die Jobs überschneiden und die Prozesse erschöpfen. Unterstützt die Anwendung keine gleichzeitigen Ausführungen, muss sie selbst eine Sperre umsetzen.
Aktuelle Cron-Jobs
Unter Aktuelle Cron-Jobs finden Sie die Liste der angelegten Cron-Jobs, die Sie bei Bedarf bearbeiten oder löschen können.
Die Zeitplanung prüfen
| Intervall | Minute | Stunde | Tag des Monats | Monat | Wochentag |
|---|---|---|---|---|---|
| Alle 15 Minuten | */15 |
* |
* |
* |
* |
| Täglich um 03:10 | 10 |
3 |
* |
* |
* |
| Jeden Montag um 03:10 | 10 |
3 |
* |
* |
1 |
Diese Uhrzeiten beziehen sich auf die Cron-Umgebung des Servers; prüfen Sie deren Zeitzone, bevor Sie eine Aktion planen, die an eine Ortszeit gebunden ist. Füllen Sie diese Felder in cPanel einzeln aus: Fügen Sie die fünf Felder nicht in das Feld Befehl ein.
Prüfen Sie nach dem Speichern die nächste Ausführung anhand ihres Logs oder des erwarteten Ergebnisses. Ein erfolgreicher manueller Test beweist nicht, dass cron dieselbe Umgebung hat: Es lädt normalerweise weder .bashrc noch die Variablen Ihres Terminals oder NVM. Verwenden Sie absolute Pfade und konfigurieren Sie explizit, was das Skript braucht.
Gleichzeitige Ausführungen vermeiden
Läuft der Befehl im Vordergrund und ist flock verfügbar, können Sie während der gesamten Ausführung eine Sperre halten:
/usr/bin/flock -n /home/usuario_cpanel/tarea.lock /opt/alt/php83/usr/bin/php /home/usuario_cpanel/apps/mi-proyecto/tarea.php
Prüfen Sie die Pfade und ob die Anwendung von einem anderen Arbeitsverzeichnis abhängt. Die Sperre wird freigegeben, wenn der Befehl endet; sie deckt weder Jobs ab, die er im Hintergrund startet, noch entfernte Prozesse, die nach einem HTTP-Aufruf weiterlaufen. Bekommt er die Sperre nicht, überspringt -n diese Ausführung: Prüfen Sie, ob dieses Verhalten zu Ihrer Aufgabe passt.
Ein gelöschter Cron-Eintrag verhindert künftige Ausführungen, stoppt aber keine, die bereits läuft. Führt der Job Zahlungen, Versand oder Datenänderungen aus, prüfen Sie seinen Zustand, bevor Sie ihn nach einem Timeout wiederholen.
Queue-Worker: Cron oder persistente Prozesse
Ein Queue-Worker, der per Cron gestartet wird, muss enden, wenn keine Arbeit mehr ansteht, und darf sich nicht mit dem der nächsten Minute überschneiden. Zum Beispiel für Laravel, jede Minute:
cd /home/usuario_cpanel/apps/mi-proyecto && /usr/bin/flock -n /home/usuario_cpanel/.cola-mi-proyecto.lock /opt/alt/php84/usr/bin/php artisan queue:work --stop-when-empty --max-time=300
Er arbeitet die offenen Jobs ab und endet; läuft der vorherige noch, überspringt flock -n diese Ausführung. Jobs warten höchstens eine Minute. In Laravel können Sie ihn auch über den Scheduler starten, wie in Laravel installieren beschrieben.
Verwenden Sie Cron nicht, um einen Worker mit & oder nohup dauerhaft laufen zu lassen: Niemand überwacht ihn, fällt er aus, startet er nicht neu, und ohne Sperre kommt jede Minute ein weiterer hinzu.
In den Tarifen Avanza, Max und Elastic halten persistente Prozesse einen Queue-Worker, Horizon oder einen eigenen Befehl dauerhaft am Laufen und starten ihn neu, wenn er ausfällt. Wenn Sie sie nutzen, sehen Sie unter Ihren Cron-Jobs eine Zeile, die auf # hostsuar-procesos endet: Das ist der Wächter, der sie jede Minute prüft. Bearbeiten oder löschen Sie sie nicht; sie wird über Tools > Prozesse verwaltet.
Eine Zeile mit schedule:run, die auf # hostsuar-deploy- und eine Zahl endet, ist der Scheduler einer Laravel-Anwendung, den Deploy+ beim Veröffentlichen eingerichtet hat. Diese gehört Ihnen: Sie können sie wie jede andere ändern oder löschen.
Das könnte Ihnen auch helfen
- Alte E-Mails sicher löschen Bereinigen Sie alte E-Mails, ohne Maildir blind zu löschen; prüfen Sie Konto und Ordner, testen Sie...
- Dauerhafte Prozesse: Queue-Worker, Horizon und dauerhaft laufende Befehle Lassen Sie Laravel-Queue-Worker, Horizon, ein persistentes Redis oder einen eigenen Befehl in den Ta...
- Die Datei .htaccess – was Sie wissen müssen Lernen Sie die rekursive Wirkung von .htaccess kennen und welche Optionen Sie pro Verzeichnis anpass...
- Entwickeln und automatisieren mit der cPanel-API Verwenden Sie die cPanel-API über lokale UAPI oder externe Token, um E-Mail, FTP und Weiterleitungen...
Stimmt etwas nicht oder hat sich etwas geändert? Erzählen Sie es uns, und wir prüfen es.