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