Cron Jobs: Scheduled Task Management (Artikel 299)
Beherrschung der zeitgesteuerten Aufgabenplanung mit Cron. Erfahren Sie alles über crontab-Syntax, System-weite Automatisierung und den Umgang mit anacron auf SLES/Arch.
# Cron Deep Dive: Zeitgesteuerte Aufgaben professionell planen
TL;DR / Management Summary Trotz moderner Alternativen wie Systemd-Timern (Artikel 053) bleibt Cron das universelle Werkzeug für die zeitgesteuerte Ausführung von Skripten. Ob Backups, Datenbank-Wartung oder das Versenden von Log-Reports: Wer die Crontab-Syntax beherrscht, automatisiert seine Infrastruktur präzise. Ein Senior Admin weiß zudem, wie er Anacron nutzt, um sicherzustellen, dass Aufgaben auch nach einem System-Stillstand nachgeholt werden.
# 1. Einführung & Architektur
Der Dämon im Hintergrund.
Der crond Dämon wacht jede Minute auf und prüft die Tabellen in /var/spool/cron/ und /etc/cron.d/.
# Die Hierarchie (Mermaid)
graph TD
A[crond Daemon] --> B[User Crontabs: /var/spool/cron/tabs/]
A --> C[System Crontab: /etc/crontab]
A --> D[Modular Configs: /etc/cron.d/]
A --> E[Periodic Folders: cron.daily / hourly]
F[User: crontab -e] --> B
G[Admin: vi] --> D
# 2. Die Crontab Syntax
Fünf Sterne für die Zeit.
* * * * * Befehl
- Minute: 0-59
- Stunde: 0-23
- Tag des Monats: 1-31
- Monat: 1-12
- Wochentag: 0-7 (0 und 7 sind Sonntag)
# Beispiele für die Praxis
# Jeden Montag um 05:00 Uhr morgens
0 5 * * 1 /usr/local/bin/weekly_cleanup.sh
# Alle 15 Minuten
*/15 * * * * /usr/local/bin/check_temp.sh
# Um 03:00 Uhr an jedem 1. des Monats
0 3 1 * * /usr/local/bin/monthly_report.sh
# 3. System-weite Automatisierung
Ordnung statt Chaos.
Nutzen Sie als Admin niemals die Crontab des Users Root (crontab -e). Nutzen Sie die Verzeichnisse:
/etc/cron.daily/: Werfen Sie Skripte hier rein, wenn sie einmal am Tag laufen sollen (keine Zeitwahl möglich!)./etc/cron.d/: Erstellen Sie hier eigene Dateien für Ihre Applikationen.# /etc/cron.d/myapp # Minute Hour Day Month Week User Command 0 2 * * * root /opt/myapp/bin/backup.sh
# 4. Day-2 Operations: Anacron
Gedächtnis für Server-Pausen.
Normaler Cron führt Aufgaben nicht aus, wenn der Server zum geplanten Zeitpunkt ausgeschaltet war. Anacron löst dies.
- Anacron merkt sich den letzten Ausführungstag in
/var/spool/anacron/. - Beim nächsten Booten prüft er, ob ein täglicher/wöchentlicher Job verpasst wurde und holt ihn nach.
# 5. Troubleshooting & “War Stories”
Wenn die Automatik schläft.
# Story 1: “Die leere Umgebung”
Symptom: Ein Skript funktioniert manuell aufgerufen perfekt, schlägt aber via Cron fehl mit command not found.
Ursache: Cron lädt keine User-Profile. Der $PATH ist oft nur /usr/bin:/bin.
Lösung: Definieren Sie den Pfad am Anfang der Crontab oder nutzen Sie absolute Pfade:
PATH=/usr/local/bin:/usr/bin:/bin
# Story 2: “Das volle Mail-Postfach”
Symptom: Der lokale Root-User hat hunderte Mails von Cron. Die Partition /var/spool/mail läuft voll.
Ursache: Cron sendet den Output jedes Skripts per E-Mail an den Besitzer.
Lösung: Leiten Sie den Output in ein Logfile oder ins Nirgendwo um:
* * * * * /script.sh > /dev/null 2>&1. Oder nutzen Sie MAILTO="" am Anfang der Datei.
# 6. Fazit & Empfehlung
- Wartung: Nutzen Sie
crontab -l, um die Liste Ihrer geplanten Aufgaben regelmäßig zu auditieren. - Best Practice: Fügen Sie am Ende jedes Skripts eine Log-Meldung hinzu, damit Sie im Syslog sehen, wann Cron es gestartet hat.
- Wahl: Nutzen Sie Cron für einfache Intervalle. Nutzen Sie Systemd-Timer für komplexe Abhängigkeiten (z.B. “Nur starten, wenn Datenbank-Dienst bereit ist”).
# Anhang: Cheatsheet
| Aufgabe | Befehl |
|---|---|
| Eigene Crontab editieren | crontab -e |
| Eigene Crontab listen | crontab -l |
| Crontab eines anderen Users | sudo crontab -u <user> -e |
| Crontab löschen | crontab -r |
| Alle 5 Minuten | */5 * * * * |
| Montag bis Freitag | * * * * 1-5 |
| Alle 2 Stunden | 0 */2 * * * |
| Systemweite Cron-Dienste | ls /etc/cron.* |
| Logs ansehen | grep CRON /var/log/syslog |