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
- Melden Sie sich bei cPanel an
- Klicken Sie im Bereich Erweitert auf CRON-Jobs

Schritt 2: E-Mail-Benachrichtigungen konfigurieren
Konfigurieren Sie vor dem Erstellen von Aufgaben die E-Mail-Adresse, um die Ergebnisse zu erhalten:
- Geben Sie in der E-Mail-CRON-Sektion Ihre E-Mail-Adresse ein
- Klicken Sie auf E-Mail aktualisieren (Update Email)

💡 Tipp: Um Benachrichtigungen für eine bestimmte Aufgabe zu deaktivieren, fügen Sie
>/dev/null 2>&1am Ende des Befehls hinzu.
Schritt 3: Einen neuen CRON-Job hinzufügen
- Scrollen Sie zur Neuen CRON-Job hinzufügen-Sektion
- 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-59oder* - Stunde:
0-23oder* - Tag:
1-31oder* - Monat:
1-12oder* - Wochentag:
0-7oder*
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
- In der Rubrik Aktuelle CRON-Jobs den zu bearbeitenden Job finden
- Auf Bearbeiten klicken
- Änderungen vornehmen
- Auf Zeile bearbeiten klicken
Job löschen
- In der Rubrik Aktuelle CRON-Jobs den zu löschenden Job finden
- Auf Löschen klicken
- 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 |
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
