Webhosting16. Dezember 2025 22 Aufrufe

Wie man CRON-Jobs auf cPanel einrichtet

Wie man CRON-Jobs auf cPanel einrichtet

Wie man CRON-Jobs auf cPanel konfiguriert

Geschätzte Zeit: 10 Minuten
Schwierigkeit: Mittel ⭐⭐
Voraussetzungen: Zugang zu cPanel, grundlegende Kenntnisse der Befehlszeile


📋 Einführung

CRON-Jobs ermöglichen die Automatisierung der Ausführung von Skripten und Befehlen in regelmäßigen Abständen auf Ihrem Server. Es ist ein leistungsstarkes Werkzeug, um wiederkehrende Aufgaben ohne manuelle Eingriffe zu automatisieren.

Gängige Anwendungsbeispiele

Job Typische Häufigkeit
🔄 Automatische Backups Täglich oder wöchentlich
📧 Newsletter-Versand Wöchentlich
🗑️ Bereinigung temporärer Dateien Täglich
📊 Berichterstellung Täglich oder monatlich
🔔 WordPress WP-Cron Alle 15-30 Minuten
💾 Daten-Synchronisierung Stündlich
📬 E-Mail-Überprüfung Alle 5 Minuten
🛒 Lagerbestand aktualisieren (E-Commerce) Stündlich

🔢 CRON-Syntax verstehen

Aufbau eines CRON-Ausdrucks

Ein CRON-Job wird durch 5 Zeitfelder + den zu ausführenden Befehl definiert:

*    *    *    *    *    Befehl zum Ausführen
│    │    │    │    │
│    │    │    │    └─── Wochentag (0-7) (0 und 7 = Sonntag)
│    │    │    └──────── Monat (1-12)
│    │    └───────────── Tag des Monats (1-31)
│    └────────────────── Stunde (0-23)
└─────────────────────── Minute (0-59)

Mögliche Werte

Feld Werte Sonderzeichen
Minute 0-59 * , - /
Stunde 0-23 * , - /
Tag des Monats 1-31 * , - /
Monat 1-12 oder jan-dec * , - /
Wochentag 0-7 oder sun-sat * , - /

Sonderzeichen

Zeichen Bedeutung Beispiel
* Alle Werte * * * * * = jede Minute
, Werteliste 1,15,30 = um 1, 15 und 30 Minuten
- Wertebereich 1-5 = von 1 bis 5
/ Intervall */15 = alle 15 Einheiten

Beispiele für CRON-Ausdrücke

Ausdruck Bedeutung
* * * * * Jede Minute
*/5 * * * * Alle 5 Minuten
*/15 * * * * Alle 15 Minuten
0 * * * * Jede Stunde (um Minute 0)
0 */2 * * * Alle 2 Stunden
0 0 * * * Jeden Tag um Mitternacht
0 2 * * * Jeden Tag um 2 Uhr morgens
30 4 * * * Jeden Tag um 4:30 Uhr
0 0 * * 0 Jeden Sonntag um Mitternacht
0 0 * * 1-5 Von Montag bis Freitag um Mitternacht
0 0 1 * * Am 1. jedes Monats um Mitternacht
0 0 1 1 * Am 1. Januar um Mitternacht
0 8,12,18 * * * Um 8, 12 und 18 Uhr jeden Tag
0 9-17 * * 1-5 Von 9 bis 17 Uhr, von Montag bis Freitag

⚙️ Ein CRON-Job auf cPanel erstellen

Schritt 1: Zugriff auf CRON-Jobs

  1. Melden Sie sich bei cPanel an
  2. Klicken Sie im Bereich Erweitert auf CRON-Jobs

Bild

Schritt 2: E-Mail-Benachrichtigungen konfigurieren

Konfigurieren Sie vor dem Erstellen von Aufgaben die E-Mail-Adresse, um die Ergebnisse zu erhalten:

  1. Geben Sie in der E-Mail-CRON-Sektion Ihre E-Mail-Adresse ein
  2. Klicken Sie auf E-Mail aktualisieren (Update Email)
    Bild

💡 Tipp: Um Benachrichtigungen für eine bestimmte Aufgabe zu deaktivieren, fügen Sie >/dev/null 2>&1 am Ende des Befehls hinzu.


Schritt 3: Einen neuen CRON-Job hinzufügen

  1. Scrollen Sie zur Neuen CRON-Job hinzufügen-Sektion
  2. Gängige Einstellungen: Verwenden Sie das Dropdown-Menü, um ein vorgegebenes Intervall auszuwählen
Option Generierter Ausdruck
Einmal pro Minute * * * * *
Alle 5 Minuten */5 * * * *
Zweimal pro Stunde 0,30 * * * *
Einmal pro Stunde 0 * * * *
Zweimal pro Tag 0 0,12 * * *
Einmal pro Tag 0 0 * * *
Einmal pro Woche 0 0 * * 0
Einmal pro Monat 0 0 1 * *

Schritt 4: Intervall anpassen (optional)

Wenn die vorgegebenen Optionen nicht passen, füllen Sie die Felder manuell aus:

  • Minute: 0-59 oder *
  • Stunde: 0-23 oder *
  • Tag: 1-31 oder *
  • Monat: 1-12 oder *
  • Wochentag: 0-7 oder *

Schritt 5: Befehl eingeben

Geben Sie im Feld Befehl den vollständigen Befehl mit absolutem Pfad ein.

Beispiele für Befehle:

# Führen Sie ein PHP-Skript aus
/usr/local/bin/php /home/username/public_html/skript.php

# Ausführen mit wget (Aufruf einer URL)
/usr/bin/wget -q -O /dev/null https://meineseite.com/cron.php

# Ausführen mit curl
/usr/bin/curl -s https://meineseite.com/cron.php > /dev/null 2>&1

# Löschen von Dateien, die älter als 7 Tage sind
/usr/bin/find /home/username/public_html/tmp -type f -mtime +7 -delete

Schritt 6: Speichern

Klicken Sie auf Neuen CRON-Job hinzufügen (Add New Cron Job)

Der Job wird in der Liste der Aktuellen CRON-Jobs (Current Cron Jobs) angezeigt.


📝 Häufige CRON-Befehle

Ausführen eines PHP-Skripts

/usr/local/bin/php /home/username/public_html/mon-script.php

💡 Der Pfad zu PHP kann variieren. Häufige Pfade:

  • /usr/local/bin/php
  • /usr/bin/php
  • /usr/local/bin/ea-php81 (für eine spezifische Version)

Aufrufen einer URL mit wget

/usr/bin/wget -q -O /dev/null https://monsite.com/cron.php
Option Bedeutung
-q Leiser Modus (quiet)
-O /dev/null Ausgabe nicht speichern

Aufrufen einer URL mit curl

/usr/bin/curl -s https://monsite.com/cron.php > /dev/null 2>&1
Option Bedeutung
-s Leiser Modus
> /dev/null 2>&1 Alle Ausgaben nach null umleiten

Temporäre Dateien löschen

# Löschen von .tmp-Dateien, die älter als 24 Stunden sind
/usr/bin/find /home/username/public_html/cache -name "*.tmp" -mtime +1 -delete

# Löschen von Dateien, die älter als 7 Tage sind, in einem Verzeichnis
/usr/bin/find /home/username/logs -type f -mtime +7 -delete

Datenbank sichern

/usr/bin/mysqldump -u db_user -p'mot_de_passe' db_name > /home/username/backups/backup_$(date +\%Y\%m\%d).sql

⚠️ Sicherheit: Vermeiden Sie das Speichern von Klartextpasswörtern. Verwenden Sie eine sichere .my.cnf-Datei.


Dateien komprimieren

/usr/bin/tar -czf /home/username/backups/site_$(date +\%Y\%m\%d).tar.gz /home/username/public_html

🔵 CRON-Jobs für WordPress

Problem mit WP-Cron

WordPress verwendet ein "Pseudo-Cron"-System namens WP-Cron, das bei jedem Seitenaufruf ausgeführt wird. Auf Websites mit geringem Traffic können geplante Aufgaben verzögert werden.

Lösung: Deaktivieren Sie WP-Cron und verwenden Sie ein echtes CRON-System.


Schritt 1: Deaktivieren von WP-Cron

Bearbeiten Sie die Datei wp-config.php und fügen Sie diese Zeile vor /* That's all, stop editing! */ hinzu:

define('DISABLE_WP_CRON', true);

Schritt 2: Erstellen eines CRON-Systems

Option A: Mit wget

/usr/bin/wget -q -O /dev/null https://monsite.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1

Option B: Mit curl

/usr/bin/curl -s https://monsite.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1

Option C: Direkt mit PHP

/usr/local/bin/php /home/username/public_html/wp-cron.php > /dev/null 2>&1

Empfohlene Frequenz für WordPress

Art der Website Frequenz
Persönlicher Blog Jede Stunde (0 * * * *)
Unternehmenswebsite Alle 30 Minuten (*/30 * * * *)
E-Commerce WooCommerce Alle 15 Minuten (*/15 * * * *)
High-Traffic-Website Alle 5 Minuten (*/5 * * * *)

Vollständige WordPress-Konfiguration

Intervall Befehl
*/15 * * * * /usr/bin/wget -q -O /dev/null https://monsite.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1

📋 Praktische Beispiele

Beispiel 1: Tägliche Sicherung um 3 Uhr morgens

Feld Wert
Minute 0
Stunde 3
Tag *
Monat *
Wochentag *
Befehl /usr/local/bin/php /home/username/public_html/backup.php > /dev/null 2>&1

Vollständiger Ausdruck: 0 3 * * *


Beispiel 2: Cache alle 6 Stunden leeren

Feld Wert
Minute 0
Stunde */6
Tag *
Monat *
Wochentag *
Befehl /usr/local/bin/php /home/username/public_html/clear_cache.php

Vollständiger Ausdruck: 0 */6 * * *


Beispiel 3: Wöchentlicher Bericht montags um 9 Uhr

Feld Wert
Minute 0
Stunde 9
Tag *
Monat *
Wochentag 1
Befehl /usr/local/bin/php /home/username/public_html/weekly_report.php

Vollständiger Ausdruck: 0 9 * * 1


Beispiel 4: Preisaktualisierung alle Stunden (E-Commerce)

Feld Wert
Minute 0
Stunde *
Tag *
Monat *
Wochentag *
Befehl /usr/bin/curl -s https://monsite.com/update-prices.php > /dev/null 2>&1

Vollständiger Ausdruck: 0 * * * *


Beispiel 5: Löschen abgelaufener Sitzungen täglich

Feld Wert
Minute 30
Stunde 2
Tag *
Monat *
Wochentag *
Befehl /usr/bin/find /home/username/tmp/sessions -type f -mtime +1 -delete

Vollständiger Ausdruck: 30 2 * * *


✏️ CRON-Job bearbeiten oder löschen

Job bearbeiten

  1. In der Rubrik Aktuelle CRON-Jobs den zu bearbeitenden Job finden
  2. Auf Bearbeiten klicken
  3. Änderungen vornehmen
  4. Auf Zeile bearbeiten klicken

Job löschen

  1. In der Rubrik Aktuelle CRON-Jobs den zu löschenden Job finden
  2. Auf Löschen klicken
  3. Löschung bestätigen

🔧 Fehlerbehebung

CRON-Job wird nicht ausgeführt

❌ Mögliche Ursache ✅ Lösung
Falscher Pfad zu PHP Überprüfen Sie mit which php über SSH
Falscher Pfad zum Skript Verwenden Sie den vollständigen absoluten Pfad
Unzureichende Berechtigungen Überprüfen Sie die Berechtigungen des Skripts (755) Syntaxfehler im Skript Führen Sie das Skript manuell aus Falscher CRON-Ausdruck Überprüfen Sie auf crontab.guru

Den Pfad zu PHP finden

Melden Sie sich per SSH an und führen Sie aus:

which php

Typisches Ergebnis: /usr/local/bin/php

Für eine spezifische Version:

which ea-php81

Eine Befehl manuell testen

Vor dem Erstellen des CRON-Jobs testen Sie den Befehl per SSH:

/usr/local/bin/php /home/username/public_html/mon-script.php

Wenn das Skript manuell funktioniert, sollte es auch im CRON-Job funktionieren.


Fehlermeldungen erhalten

Zum Debuggen, entfernen Sie vorübergehend > /dev/null 2>&1 aus dem Befehl.

Sie erhalten dann Fehler per E-Mail.


Gängige Fehler

"No such file or directory"

/bin/sh: /home/username/public_html/script.php: No such file or directory

Lösung: Überprüfen Sie, ob der Pfad korrekt ist und die Datei existiert.


"Permission denied"

/bin/sh: /home/username/public_html/script.php: Permission denied

Lösung: Machen Sie das Skript ausführbar:

chmod 755 /home/username/public_html/script.php

Oder verwenden Sie den PHP-Interpreter explizit:

/usr/local/bin/php /home/username/public_html/script.php

"Command not found"

/bin/sh: php: command not found

Lösung: Verwenden Sie den vollständigen Pfad zu PHP (/usr/local/bin/php).


CRON-Logs überprüfen

Die CRON-Logs befinden sich normalerweise in /var/log/cron (Root-Zugriff erforderlich).

Bei Shared Hosting verwenden Sie E-Mail-Benachrichtigungen zum Debuggen.


⚠️ Best Practices

Häufigkeit der Aufgaben

⚠️ Vermeiden ✅ Empfohlen
* * * * * (jede Minute) ohne Grund Mindestens 5-15 Minuten zwischen den Ausführungen
Mehrere schwere Aufgaben zur gleichen Zeit Aufgaben über die Zeit verteilen
Unnötige Aufgaben Veraltete Aufgaben löschen

⚠️ Shared Hosting: Die meisten Hosts beschränken CRON auf mindestens 5-15 Minuten.


Sicherheit

Praxis Empfehlung
Passwörter Nicht im Klartext in Befehlen enthalten
Sensible Skripte Außerhalb von public_html platzieren
Logs Ausführungen regelmäßig überwachen
Berechtigungen Berechtigungen der Skripte beschränken

Optimierung

# Best Practice: nice verwenden, um die Priorität zu begrenzen
nice -n 15 /usr/local/bin/php /home/username/public_html/script.php

# Best Practice: Ausgabe umleiten, um E-Mails zu vermeiden
/usr/local/bin/php /home/username/script.php > /dev/null 2>&1

# Best Practice: In eine Datei protokollieren, um Debugging zu ermöglichen
/usr/local/bin/php /home/username/script.php >> /home/username/logs/cron.log 2>&1

📊 Nützliche Tools

CRON-Ausdrucksgeneratoren

Tool URL
Crontab Guru crontab.guru
Cron Maker cronmaker.com
Crontab Generator crontab-generator.org

CRON-Ausdruck testen

Auf crontab.guru geben Sie Ihren Ausdruck ein, um zu sehen, wann er ausgeführt wird:

*/15 * * * *

Ergebnis: "Jede 15. Minute" Nächste Ausführungen: 00:00, 00:15, 00:30, 00:45, 01:00...


📝 Zusammenfassung

CONFIGURATION EINES CRON-JOBS:

1. cPanel → Erweitert → Cron-Jobs
2. E-Mail-Benachrichtigung konfigurieren (optional)
3. Intervall auswählen (Dropdown-Menü oder benutzerdefiniert)
4. Befehl mit absolutem Pfad eingeben
5. Auf "Neuen Cron-Job hinzufügen" klicken

CRON-SYNTAX:
┌─────────── Minute (0-59)
│ ┌───────── Stunde (0-23)
│ │ ┌─────── Tag des Monats (1-31)
│ │ │ ┌───── Monat (1-12)
│ │ │ │ ┌─── Wochentag (0-7)
│ │ │ │ │
* * * * *  Befehl

ÜBLICHE INTERVALLE:
├── */5 * * * *    → Alle 5 Minuten
├── 0 * * * *      → Jede Stunde
├── 0 0 * * *      → Jeden Tag um Mitternacht
├── 0 0 * * 0      → Jeden Sonntag um Mitternacht
└── 0 0 1 * *      → Am 1. jedes Monats

TYPISCHE BEFEHLE:
├── PHP: /usr/local/bin/php /Pfad/skript.php
├── wget: /usr/bin/wget -q -O /dev/null https://url
├── curl: /usr/bin/curl -s https://url > /dev/null 2>&1
└── find: /usr/bin/find /Pfad -mtime +7 -delete

WORDPRESS WP-CRON:
1. Fügen Sie in wp-config.php hinzu: define('DISABLE_WP_CRON', true);
2. Erstellen Sie den CRON: */15 * * * * wget -q -O /dev/null https://site.com/wp-cron.php?doing_wp_cron

BENACHRICHTIGUNGEN DEAKTIVIEREN:
Am Ende des Befehls hinzufügen: > /dev/null 2>&1