Cron-Job-Verwaltung: Geplante Aufgaben erstellen
Geplante Aufgaben unter Linux mit crontab erstellen und verwalten: Cron-Ausdrucks-Syntax, praktische Beispiele, Protokollierung und häufige Fehler vermeiden.
Inhaltsverzeichnis
Cron-Job-Verwaltung: Geplante Aufgaben erstellen
Cron ist ein zeitbasierter Job-Scheduler unter Linux, der Befehle und Skripte automatisch zu bestimmten Zeiten oder Intervallen ausführt. Er ist unverzichtbar für die Automatisierung wiederkehrender Aufgaben wie Backups, Log-Bereinigung und Update-Prüfungen.
Der Cron-Dienst ist auf den meisten Linux-Distributionen standardmäßig installiert und läuft. Prüfen Sie den Status mit systemctl status cron oder systemctl status crond.
Crontab-Syntax
Jeder Cron-Job besteht aus fünf Zeitfeldern und dem auszuführenden Befehl:
* * * * * /pfad/zum/befehl
│ │ │ │ │
│ │ │ │ └── Wochentag (0-7, 0 und 7 = Sonntag)
│ │ │ └──── Monat (1-12)
│ │ └────── Tag des Monats (1-31)
│ └──────── Stunde (0-23)
└────────── Minute (0-59)
Sonderzeichen
| Zeichen | Bedeutung | Beispiel |
|---|---|---|
* | Jeder Wert | * * * * * = jede Minute |
, | Mehrere Werte | 1,15 * * * * = Minute 1 und 15 |
- | Bereich | 1-5 * * * * = Minuten 1 bis 5 |
/ | Schritt | */5 * * * * = alle 5 Minuten |
Praktische Cron-Ausdrucks-Beispiele
# Jede Minute ausführen
* * * * * /usr/bin/script.sh
# Jede Stunde zur vollen Stunde
0 * * * * /usr/bin/script.sh
# Täglich um 02:30 Uhr
30 2 * * * /usr/bin/backup.sh
# Jeden Montag um 08:00 Uhr
0 8 * * 1 /usr/bin/weekly-report.sh
# Am 1. jeden Monats um Mitternacht
0 0 1 * * /usr/bin/monthly-cleanup.sh
# Alle 5 Minuten
*/5 * * * * /usr/bin/check-service.sh
# Werktags (Mo-Fr) um 09:00 Uhr
0 9 * * 1-5 /usr/bin/workday-task.sh
# Alle 6 Stunden
0 */6 * * * /usr/bin/sync.sh
Spezielle Kürzel
@reboot # Einmal beim Systemstart
@yearly # Einmal im Jahr (0 0 1 1 *)
@monthly # Einmal im Monat (0 0 1 * *)
@weekly # Einmal pro Woche (0 0 * * 0)
@daily # Einmal täglich (0 0 * * *)
@hourly # Einmal pro Stunde (0 * * * *)
Verwendung von crontab
Crontab bearbeiten
# Crontab des aktuellen Benutzers bearbeiten
crontab -e
# Crontab eines bestimmten Benutzers bearbeiten (root erforderlich)
crontab -u benutzername -e
# Aktuelle Crontab auflisten
crontab -l
# Crontab löschen (mit Vorsicht verwenden!)
crontab -r
Der Befehl crontab -r löscht alle Ihre Cron-Jobs und kann nicht rückgängig gemacht werden. Sichern Sie zuerst mit crontab -l > crontab_backup.txt.
Crontab zum ersten Mal bearbeiten
# crontab -e ausführen
crontab -e
# Wenn nach einem Editor gefragt wird, wählen Sie nano (Option 1)
# Fügen Sie Ihren Job am Ende der Datei hinzu:
30 2 * * * /home/benutzer/backup.sh
# Speichern und beenden: Strg+X, J, Enter (für nano)
Systemweite Cron-Dateien
Systemweite Cron-Jobs verwenden die /etc/cron*-Verzeichnisse:
# Verzeichnisstruktur
/etc/crontab # Haupt-System-Crontab-Datei
/etc/cron.d/ # Anwendungs-Cron-Dateien
/etc/cron.hourly/ # Stündlich ausgeführte Skripte
/etc/cron.daily/ # Täglich ausgeführte Skripte
/etc/cron.weekly/ # Wöchentlich ausgeführte Skripte
/etc/cron.monthly/ # Monatlich ausgeführte Skripte
Cron-Protokollierung
Log-Dateien überwachen
# Cron-Logs auf Debian/Ubuntu
sudo tail -f /var/log/syslog | grep CRON
# Auf RHEL/CentOS
sudo tail -f /var/log/cron
# Mit journald
sudo journalctl -u cron -f
Ausgabe in Datei umleiten
# Stdout und Stderr in Datei umleiten
30 2 * * * /usr/bin/backup.sh >> /var/log/backup.log 2>&1
# Nur Fehler protokollieren
30 2 * * * /usr/bin/backup.sh 2>> /var/log/backup-errors.log
# Alle Ausgaben unterdrücken
30 2 * * * /usr/bin/backup.sh > /dev/null 2>&1
Konfigurieren Sie logrotate, um Log-Dateien zu rotieren, damit sie nicht unbegrenzt wachsen.
Häufige Fehler und Lösungen
1. Umgebungsvariablen-Probleme
Cron erbt nicht die Umgebungsvariablen der Benutzer-Shell. Definieren Sie PATH und andere Variablen explizit:
# Am Anfang der Crontab hinzufügen
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
SHELL=/bin/bash
# Oder vollständige Pfade in Befehlen verwenden
30 2 * * * /usr/bin/python3 /home/benutzer/script.py
2. Skript-Ausführungsberechtigung
# Ausführungsberechtigung für das Skript erteilen
chmod +x /home/benutzer/backup.sh
# Berechtigungen prüfen
ls -la /home/benutzer/backup.sh
3. Arbeitsverzeichnis-Probleme
# Arbeitsverzeichnis im Cron-Job explizit angeben
30 2 * * * cd /var/www/html && php artisan schedule:run
Fazit
Cron ist eines der grundlegenden Werkzeuge in der Linux-Systemadministration. Mit korrekter Syntax, Umgebungsvariablen-Verwaltung und Protokollierung können Sie zuverlässige Automatisierung aufbauen. Überprüfen Sie Ihre Jobs regelmäßig mit crontab -l und überwachen Sie Log-Dateien, um Probleme frühzeitig zu erkennen.
Verwandte Artikel
VDS-Server per SSH verbinden: PuTTY, Terminal & Schlüssel
SSH-Verbindung zum Linux VDS-Server: PuTTY, Terminal, schlüsselbasierte Authentifizierung, Path Panel Firewall-Regel und Sicherheitstipps für Einsteiger.
Windows VDS per RDP verbinden: Vollständige Anleitung
Schritt-für-Schritt-Anleitung zur RDP-Verbindung mit Windows Server VDS: Einrichtung, NLA-Sicherheit, Path Panel Firewall-Regel und Fehlerbehebung.
VDS-Server Betriebssystem wechseln: Schritt-für-Schritt
Betriebssystemwechsel am VDS-Server über das REXE-Panel: Backup-Tipps, unterstützte Linux-Distributionen und Windows Server Versionen im Überblick.