Ein Cronjob ist eine zeitgesteuerte Aufgabe, die auf Unix-ähnlichen Betriebssystemen wie Linux und BSD ausgeführt wird. Diese Aufgaben werden vom Cron-Daemon verwaltet, einem Hintergrundprozess, der regelmäßig überprüft, ob es an der Zeit ist, eine bestimmte Aufgabe auszuführen. Cronjobs sind besonders nützlich für wiederkehrende Aufgaben wie Backups, Systemwartung und das Ausführen von Skripten.
Funktionsweise
Crontab-Datei
Die Konfiguration von Cronjobs erfolgt über die sogenannte Crontab-Datei. Jede Zeile in dieser Datei stellt einen einzelnen Cronjob dar und besteht aus fünf Feldern, die die Ausführungszeit angeben, gefolgt von dem auszuführenden Befehl.
Syntax
Die grundlegende Syntax einer Crontab-Zeile lautet:
* * * * * /pfad/zum/befehl
| | | | |
| | | | +----- Tag der Woche (0 - 7) (Sonntag ist sowohl 0 als auch 7)
| | | +------- Monat (1 - 12)
| | +--------- Tag des Monats (1 - 31)
| +----------- Stunde (0 - 23)
+------------- Minute (0 - 59)
Beispiel
Ein Cronjob, der jeden Tag um Mitternacht ein Backup-Skript ausführt, könnte wie folgt aussehen:
0 0 * * * /usr/local/bin/backup.sh
Verwaltung von Cronjobs
Crontab-Befehle
- Anzeigen der Crontab-Datei: Um die aktuelle Crontab-Datei eines Benutzers anzuzeigen, verwenden Sie den Befehl:
crontab -l
- Bearbeiten der Crontab-Datei: Um die Crontab-Datei zu bearbeiten, verwenden Sie:
crontab -e
- Löschen der Crontab-Datei: Um alle Cronjobs eines Benutzers zu löschen, verwenden Sie:
crontab -r
Systemweite Cronjobs
Systemweite Cronjobs werden in speziellen Verzeichnissen wie /etc/cron.d/
, /etc/cron.daily/
, /etc/cron.hourly/
, /etc/cron.weekly/
und /etc/cron.monthly/
verwaltet. Diese Verzeichnisse enthalten Skripte, die zu den angegebenen Zeiten ausgeführt werden.
Erweiterte Funktionen
Platzhalter und Ranges
- Platzhalter: Das Sternchen
*
wird als Platzhalter verwendet und steht für „jedes mögliche Wert“. - Ranges: Mit Bindestrichen können Wertebereiche angegeben werden, z.B.
1-5
für Montag bis Freitag. - Listen: Mit Kommata können mehrere Werte angegeben werden, z.B.
1,15
für den 1. und 15. des Monats.
Sonderzeichen
- Schrägstrich
/
: Wird verwendet, um Schritte anzugeben, z.B.*/5
für alle 5 Minuten. - Fragezeichen
?
: Wird in einigen Cron-Implementierungen als Platzhalter für „keinen spezifischen Wert“ verwendet. - Bindestrich
-
: Gibt einen Bereich an, z.B.1-5
für Montag bis Freitag. - Komma
,
: Trennt einzelne Werte, z.B.1,3,5
für Montag, Mittwoch und Freitag.
Beispiel für komplexe Cronjobs
Ein Cronjob, der jede Stunde in der ersten Minute und in der 30. Minute ein Skript ausführt, könnte wie folgt aussehen:
1,30 * * * * /usr/local/bin/script.sh
Ein Cronjob, der jeden Montag um 3:00 Uhr morgens ein Wartungsskript ausführt:
0 3 * * 1 /usr/local/bin/maintenance.sh
Überwachung und Logging
Cronjobs generieren oft Ausgaben, die zur Überwachung und Fehlerbehebung nützlich sind. Standardmäßig werden diese Ausgaben per E-Mail an den Benutzer gesendet, der den Cronjob erstellt hat. Alternativ können Sie die Ausgabe in eine Logdatei umleiten:
0 0 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
Fazit
Cronjobs sind ein mächtiges Werkzeug zur Automatisierung wiederkehrender Aufgaben in Unix-ähnlichen Betriebssystemen. Mit ihrer flexiblen Syntax und den umfangreichen Konfigurationsmöglichkeiten bieten sie eine zuverlässige Methode zur Verwaltung von Systemaufgaben und Skripten. Durch das Verständnis der Crontab-Syntax und der verschiedenen Optionen können Administratoren sicherstellen, dass ihre Systeme effizient und zuverlässig arbeiten.