1. Was sind Cronjobs?

Ein Cronjob ist ein zeitgesteuerter Befehl, der vom Betriebssystem automatisch zu bestimmten Zeiten oder Intervallen ausgefuehrt wird. Der Name kommt von Cron – einem Unix-Daemon, der seit den 1970er-Jahren fuer die Zeitplanung von Aufgaben auf Unix/Linux-Systemen zustaendig ist. Crontab steht fuer "Cron Table" – die Konfigurationsdatei, in der Cronjobs definiert werden.

Cronjobs laufen im Hintergrund ohne Benutzerinteraktion – ideal fuer Aufgaben, die regelmaessig erledigt werden muessen: Backups erstellen, Logs rotieren, Caches leeren, E-Mails versenden, Datenbanken optimieren oder externe APIs abfragen.

Cronjob vs. Systemd Timer vs. Queue Worker

Cron ist der Klassiker fuer zeitbasierte Aufgaben – einfach, zuverlaessig, auf jedem Linux verfuegbar. Systemd Timer sind moderner, integrierter und bieten besseres Logging – aber komplexer einzurichten. Queue Worker (z.B. Laravel Horizon, BullMQ) sind fuer event-getriggerte, nicht zeitbasierte Jobs – wenn du schnelle Reaktionen auf Benutzeraktionen brauchst. Fuer die meisten Webhosting-Szenarien ist Cron die richtige Wahl.

2. Die Crontab-Syntax verstehen

Jede Zeile in der Crontab definiert einen Cronjob und folgt einem festen Format mit fuenf Zeitfeldern gefolgt vom auszufuehrenden Befehl:

* * * * * /pfad/zum/befehl

Die fuenf Felder stehen fuer:

Feld 1: Minute0-59 (wann in der Stunde)
Feld 2: Stunde0-23 (welche Stunde des Tages)
Feld 3: Tag (Monat)1-31 (welcher Tag im Monat)
Feld 4: Monat1-12 (welcher Monat)
Feld 5: Wochentag0-7 (0=Sonntag, 7=Sonntag, 1=Montag...)

Spezielle Zeichen in der Crontab:

ZeichenBedeutungBeispiel
*Jeder Wert (immer)* * * * * = jede Minute
,Liste von Werten0,30 * * * * = zur Minute 0 und 30
-Bereich9-17 * * * * = stundlich von 9 bis 17 Uhr
/Schrittweite*/15 * * * * = alle 15 Minuten
@rebootBei Systemstart@reboot /skript.sh
@dailyTaeglich um MitternachtWie 0 0 * * *
@weeklyWoechentlich (Sonntag 0:00)Wie 0 0 * * 0
@monthly1. des Monats um 0:00Wie 0 0 1 * *

Praxisbeispiele: Crontab-Ausdruecke

# Jede Minute ausfuehren
* * * * * /pfad/zum/skript.sh

# Taeglich um 2:30 Uhr
30 2 * * * /pfad/zum/backup.sh

# Jeden Montag um 8 Uhr
0 8 * * 1 /pfad/zum/wochenbericht.sh

# Alle 15 Minuten
*/15 * * * * /pfad/zum/check.sh

# Monatlich am 1., um 3 Uhr
0 3 1 * * /pfad/zum/monatsabschluss.sh

# Werktags (Mo-Fr) um 9 Uhr
0 9 * * 1-5 /pfad/zum/tagesstart.sh
Tipp: Crontab-Syntax online pruefen

Tools wie crontab.guru erklaeren Crontab-Ausdruecke im Klartext und zeigen an, wann der naechste Ausfuehrungszeitpunkt ist. Ideal zum Testen neuer Cronjobs, bevor du sie in Produktion nimmst. Einfach den Cron-Ausdruck eingeben und die Beschreibung auf Englisch lesen.

3. Cronjobs einrichten: Crontab bearbeiten

Per SSH (Linux/VPS)

Die einfachste Methode bei SSH-Zugang: Die Crontab des aktuellen Benutzers bearbeiten:

crontab -e

Das oeffnet die Crontab im Standard-Editor (meist nano oder vi). Weitere nuetzliche Befehle:

# Aktuelle Crontab anzeigen
crontab -l

# Crontab loeschen (Vorsicht!)
crontab -r

# Crontab fuer anderen Benutzer anzeigen (als Root)
crontab -l -u www-data

Ueber das Hosting-Control-Panel

Viele Shared-Hosting-Anbieter bieten Cronjob-Verwaltung direkt im Kundencenter oder Plesk/cPanel. Dort kannst du Cronjobs per Formular anlegen ohne direkte Crontab-Bearbeitung. Die Felder sind dieselben: Minute, Stunde, Tag, Monat, Wochentag, Befehl. Einige Anbieter beschraenken die minimale Ausfuehrungsfrequenz (z.B. maximal stuendlich statt jede Minute) aus Performance-Gruenden.

Absolute Pfade in Cronjobs verwenden

Cronjobs laufen in einer minimalen Umgebung ohne die normalen Umgebungsvariablen deines Benutzers – vor allem ohne den vollen PATH. Verwende deshalb immer absolute Pfade fuer Programme und Skripte:

Falsch: php skript.php
Richtig: /usr/bin/php /var/www/html/skript.php

Den Pfad zu php findest du mit which php im Terminal.

4. Typische Anwendungsszenarien fuer Cronjobs

Automatische Datenbankbackups

# Taeglich um 3 Uhr: MySQL-Datenbank sichern
0 3 * * * /usr/bin/mysqldump -u dbuser -pdbpasswort dbname > /backup/db_$(date +\%Y\%m\%d).sql

Wichtig: Das Passwort direkt in der Crontab ist nicht ideal – besser eine ~/.my.cnf Datei mit den Zugangsdaten nutzen und chmod 600 setzen.

Cache leeren (z.B. bei WordPress)

# Taeglich um 4 Uhr: WP-CLI Cache leeren
0 4 * * * /usr/local/bin/wp --path=/var/www/html/wordpress cache flush

Log-Rotation und Bereinigung

# Woechentlich: Alte Logs aelter als 30 Tage loeschen
0 2 * * 0 /usr/bin/find /var/log/meinapp/ -name "*.log" -mtime +30 -delete

Laravel Scheduler (Cronjob fuer alle Laravel-Tasks)

# Laravel Scheduler: Jede Minute laufen lassen
* * * * * /usr/bin/php /var/www/html/artisan schedule:run >> /dev/null 2>&1

Bei Laravel genuegt ein Cronjob fuer alle geplanten Tasks – der Laravel Scheduler entscheidet intern, welche Tasks gerade ausfuehren sollen.

Website-Verfuegbarkeit pruefen

# Alle 5 Minuten: Website-Status pruefen, bei Fehler Mail senden
*/5 * * * * /usr/bin/curl -sf https://meinedomain.de > /dev/null || echo "Website down!" | mail -s "Alert" admin@meinedomain.de

5. Ausgaben und Logging von Cronjobs

Standardmaessig schickt Cron die Ausgabe eines Cronjobs per E-Mail an den Systembenutzer – oft unerwuenscht. Hier sind die Optionen:

Ausgaben umleiten

# Alle Ausgaben (stdout + stderr) in Log-Datei schreiben
0 3 * * * /pfad/zum/skript.sh >> /var/log/meinbackup.log 2>&1

# Alle Ausgaben verwerfen (kein Log, keine Mail)
0 3 * * * /pfad/zum/skript.sh > /dev/null 2>&1

# Nur Fehler loggen, normale Ausgaben verwerfen
0 3 * * * /pfad/zum/skript.sh > /dev/null 2>> /var/log/fehler.log

MAILTO deaktivieren

# Am Anfang der Crontab: Mail-Ausgabe fuer alle Jobs deaktivieren
MAILTO=""
Tipp: Cronjob-Ausgaben strukturiert loggen

Verwende Zeitstempel in Log-Eintraegen, damit du spaeter nachvollziehen kannst, wann was passiert ist:

0 3 * * * echo "[$(date)] Backup gestartet" >> /var/log/backup.log && /pfad/backup.sh >> /var/log/backup.log 2>&1

6. Cronjobs debuggen: Wenn es nicht klappt

Cronjobs, die im Terminal funktionieren, aber als Cronjob fehlschlagen – ein klassisches Problem. Die haeufigsten Ursachen:

Cronjob manuell testen

# Skript mit der minimalen Cron-Umgebung testen
env -i HOME=/root PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /pfad/zum/skript.sh

Cron-Systemlog pruefen

# Ubuntu/Debian: Cron-Aktivitaeten im Syslog
grep CRON /var/log/syslog | tail -20

# CentOS/RHEL: Cron-Log direkt
tail -20 /var/log/cron
Vorsicht: Doppelte Ausfuehrungen bei langen Laufzeiten

Wenn ein Cronjob laenger laeuft als sein Ausfuehrungsintervall, starten mehrere Instanzen gleichzeitig. Loesungen: flock (File Locking) oder eine PID-Datei: */5 * * * * flock -n /tmp/meinlock.lock /pfad/skript.sh. Flock verhindert, dass eine zweite Instanz startet, solange die erste noch laeuft.

7. Cronjobs im Shared Hosting: Einschraenkungen und Alternativen

Shared-Hosting-Anbieter beschraenken Cronjobs oft aus Stabilitaets- und Performance-Gruenden:

AnbieterMin. IntervallEinrichtung ueberEinschraenkungen
IONOS1 MinuteControl CenterMax. Ausfuehrungszeit begrenzt
Strato1 StundeKundencenterNur HTTP-Aufruf moeglich
Hostinger1 MinutehPanelMax. 20 Cronjobs
ALL-INKL.COM1 MinuteKAS-PanelMax. Ausfuehrungszeit 5 Min.
netcup1 MinuteSSH / PleskVoller Cron-Zugang
Hetzner VPS1 MinuteSSH (voller Root)Keine

Stand Mai 2026. Konditionen direkt beim Anbieter pruefen.

Alternative: URL-basierte Cronjobs

Einige Anbieter erlauben nur URL-Aufrufe statt Shell-Befehle. Dabei wird eine URL aufgerufen, die ein PHP-Skript ausloest:

*/30 * * * * curl -s https://meinedomain.de/cron/daily-task.php > /dev/null

Schuetze diese URLs durch einen geheimen Token, damit sie nicht von aussen missbraucht werden koennen: https://meinedomain.de/cron/daily-task.php?token=GEHEIMER_TOKEN

8. Fazit: Cronjobs als solides Fundament fuer Automatisierung

Cronjobs sind ein unverzichtbares Werkzeug fuer jeden, der Server oder Websites ernsthaft betreibt. Die Crontab-Syntax erscheint zuerst kryptisch, ist aber schnell gelernt – und mit Tools wie crontab.guru sind selbst komplexe Zeitausdruecke leicht zu formulieren.

Fuer volle Kontrolle ueber Cronjobs – insbesondere fuer kurze Intervalle, Root-Befehle und Systemd-Integration – ist ein VPS die richtige Wahl. Hetzner und netcup bieten zuverlaessige Linux-Server zu guenstigen Preisen mit uneingeschraenktem Cron-Zugang.

Hosting mit Cronjob-Unterstuetzung finden

Vergleiche Anbieter nach Cronjob-Funktionen, SSH-Zugang und Preis.

Anbieter vergleichen Domain suchen