Cronjobs einrichten: Automatische Aufgaben auf deinem Server
Cronjobs sind geplante Aufgaben, die automatisch zu bestimmten Zeiten ausgeführt werden. Sie sind entscheidend für die Serverwartung, Backups und Anwendungsaufgaben. Bei Theory7 verwenden wir Cronjobs für alles, von täglichen Backups bis hin zu minutengenauer Überwachung. In diesem Handbuch lernst du, wie du Cronjobs korrekt einrichtest und verwaltest.
Was sind Cronjobs?
Ein Cronjob ist ein Unix-Aufgabenplaner, der Befehle oder Skripte zu geplanten Zeitpunkten ausführt. Dies ermöglicht es, routinemäßige Aufgaben zu automatisieren, wodurch du Zeit sparst und die Wahrscheinlichkeit menschlicher Fehler reduzierst. Typische Anwendungen sind:
- Backups - Tägliche Sicherung von Datenbanken und Dateien, um Datenverlust zu vermeiden.
- Wartung - Protokolldateien bereinigen und rotieren, um die Serverleistung zu optimieren.
- E-Mail - Newsletter oder Benachrichtigungen an Benutzer oder Kunden senden.
- Anwendungen - Bestimmte Aufgaben innerhalb von Frameworks wie WordPress oder Laravel automatisieren.
- Überwachung - Gesundheitschecks durchführen, um den Status deines Servers oder deiner Anwendungen zu überprüfen.
Crontab bearbeiten
Jeder Benutzer hat eine eigene Crontab. Öffne sie mit:
crontab -e
Dies öffnet deine persönliche Crontab im Standard-Editor. Systemweite Cronjobs befinden sich in:
/etc/crontab
/etc/cron.d/
Cron-Syntax verstehen
Eine Cron-Zeile besteht aus 5 Zeitfeldern plus dem Befehl:
* * * * * befehl
| | | | |
| | | | +-- Wochentag (0-7, 0 und 7 = Sonntag)
| | | +---- Monat (1-12)
| | +------ Tag des Monats (1-31)
| +-------- Stunde (0-23)
+---------- Minute (0-59)
Sonderzeichen
- * - Jeder Wert
- , - Mehrere Werte (z.B. 1,3,5)
- - - Bereich (z.B. 1-5)
- / - Schritte (z.B. */5 = alle 5 Minuten)
Beispiele erklärt
# Jeden Tag um 03:00
0 3* * * /pfad/zum/script.sh
# Jede Stunde zur vollen Stunde
0 * * * * /pfad/zum/script.sh
# Alle 5 Minuten
*/5* * * * /pfad/zum/script.sh
# An jedem Wochentag um 08:30
30 8* * 1-5 /pfad/zum/script.sh
# Am 1. und 15. eines jeden Monats um Mitternacht
0 0 1,15* * /pfad/zum/script.sh
# Jeden Sonntag um 04:00
0 4* * 0 /pfad/zum/script.sh
Cronjobs erstellen
Beispiel: Datenbanksicherung
crontab -e
# Tägliches MySQL Backup um 03:00
0 3* * * mysqldump -u root -pPASSWORT datenbank > /backups/db_$(date +\%Y\%m\%d).sql
Hinweis: In der Crontab muss % als \% escaped werden, um Syntaxfehler zu vermeiden.
Beispiel: Protokolldatei bereinigen
# Wöchentlich Protokolle älter als 30 Tage löschen (Sonntag 05:00)
0 5 * * 0 find /var/log -name "*.log" -mtime +30 -delete
Beispiel: PHP-Skript ausführen
# Alle 15 Minuten PHP-Cron-Skript*/15 * * * * /usr/bin/php /var/www/site/cron.php
Verwende immer den vollständigen Pfad zur PHP-Executable, um Fehler zu vermeiden.
Cronjobs für Webanwendungen
WordPress WP-Cron
WordPress hat ein eingebautes Cron-System, das bei geringem Verkehr nicht immer zuverlässig ist. Es wird empfohlen, auf echte Cronjobs umzuschalten:
- Füge die folgende Zeile zu
wp-config.phphinzu: - Erstelle einen Crontab-Eintrag:
define('DISABLE_WP_CRON', true);
*/5* * * * /usr/bin/php /var/www/wordpress/wp-cron.php
Laravel Scheduler
Laravel hat einen leistungsstarken Scheduler, der jede Minute laufen muss, um geplante Aufgaben auszuführen:
* * * * * cd /var/www/laravel && php artisan schedule:run >> /dev/null 2>&1
Ausgabe und Protokollierung
Ausgabe in Datei
0 3 * * * /pfad/zum/script.sh >> /var/log/mein-cron.log 2>&1
- >> - An Datei anhängen
- 2>&1 - Fehler in dieselbe Datei umleiten
Ausgabe per E-Mail
Standardmäßig sendet Cron die Ausgabe an den Benutzer. Um eine spezifische E-Mail einzustellen:
MAILTO=admin@deinedomain.de
0 3* * * /pfad/zum/script.sh
Oder um alle Ausgaben zu unterdrücken:
0 3 * * * /pfad/zum/script.sh > /dev/null 2>&1
Crontab verwalten
Alle Cronjobs anzeigen
crontab -l
Cronjobs eines anderen Benutzers
sudo crontab -l -u www-data
Crontab löschen
crontab -r
Hinweis: Dies löscht ALLE Cronjobs dieses Benutzers, sei also vorsichtig.
Cron-Logs anzeigen
Überprüfe, ob Cronjobs laufen, indem du die Logs ansiehst:
# Debian/Ubuntu
grep CRON /var/log/syslog
# CentOS/RHEL
tail -f /var/log/cron
Häufige Fehler
Skript funktioniert manuell, nicht als Cron
Umgebungsvariablen sind in Cron anders. Verwende immer vollständige Pfade:
# Fehler
0 3* * * script.sh
# Gut
0 3 * * * /usr/local/bin/script.sh
PATH in Crontab festlegen
Wenn du auf bestimmte Befehle angewiesen bist, lege den PATH fest:
PATH=/usr/local/bin:/usr/bin:/bin
0 3* * * script.sh
Berechtigungen
Stelle sicher, dass Skripte ausführbar sind:
chmod +x /pfad/zum/script.sh
Verwandte Artikel
- SSH verbinden von Windows (PuTTY)
- Composer verwenden über SSH
- Serverressourcen überwachen
- Server-Backup-Strategie
Mehr Informationen zu VPS-Servern bei Theory7
Brauchst du Hilfe?
Wir sind für dich da! Hast du Fragen oder stößt du auf Probleme? Unser Support-Team hilft dir gerne persönlich weiter. Schicke uns eine Nachricht über das Ticketsystem - wir antworten normalerweise innerhalb weniger Stunden und denken gerne mit dir mit.
0 van 0 vonden dit nuttig