Webhosting‱16. Dezember 2025‱ 266 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