Cronjobs unter Linux einrichten | Enjyn Gruppe
Hallo Welt
Hallo Welt
Original Lingva Deutsch
Übersetzung wird vorbereitet...
Dieser Vorgang kann bis zu 60 Sekunden dauern.
Diese Seite wird erstmalig übersetzt und dann für alle Besucher gespeichert.
0%
DE Zurück zu Deutsch
Übersetzung durch Lingva Translate

241 Dokumentationen verfügbar

Wissensdatenbank

Cronjobs Linux Einrichten Anleitung

Zuletzt aktualisiert: 11.01.2026 um 10:22 Uhr

Cronjobs unter Linux einrichten

Cronjobs ermöglichen es, Aufgaben automatisch zu bestimmten Zeiten auszuführen - von täglichen Backups über Log-Rotation bis zu regelmäßigen Datenbank-Optimierungen. Diese Anleitung erklärt die Crontab-Syntax und zeigt praktische Beispiele.

Was ist Cron?

Cron ist ein zeitbasierter Job-Scheduler in Unix-ähnlichen Betriebssystemen. Er führt Befehle oder Skripte zu festgelegten Zeiten automatisch aus.

  • Cron: Der Daemon (Hintergrunddienst), der Jobs ausführt
  • Crontab: Die Tabelle mit den geplanten Aufgaben
  • Cronjob: Eine einzelne geplante Aufgabe

Crontab-Befehle

# Eigene Crontab bearbeiten
crontab -e

# Eigene Crontab anzeigen
crontab -l

# Eigene Crontab löschen
crontab -r

# Crontab eines anderen Benutzers bearbeiten (als root)
crontab -u username -e

Die Crontab-Syntax

Jede Zeile in der Crontab folgt diesem Format:

┌───────────── Minute (0 - 59)
│ ┌───────────── Stunde (0 - 23)
│ │ ┌───────────── Tag des Monats (1 - 31)
│ │ │ ┌───────────── Monat (1 - 12)
│ │ │ │ ┌───────────── Wochentag (0 - 7, 0 und 7 = Sonntag)
│ │ │ │ │
│ │ │ │ │
* * * * * Befehl

Sonderzeichen

Zeichen Bedeutung Beispiel
* Jeder Wert * * * * * = jede Minute
, Mehrere Werte 0,30 * * * * = zur vollen und halben Stunde
- Wertebereich 0 9-17 * * * = stündlich von 9-17 Uhr
/ Schrittweite */15 * * * * = alle 15 Minuten

Praktische Beispiele

Zeitbasierte Jobs

# Jeden Tag um 3:00 Uhr nachts
0 3 * * * /home/user/backup.sh

# Jeden Montag um 6:00 Uhr
0 6 * * 1 /home/user/weekly-report.sh

# Am 1. jeden Monats um Mitternacht
0 0 1 * * /home/user/monthly-cleanup.sh

# Alle 5 Minuten
*/5 * * * * /home/user/check-status.sh

# Alle 2 Stunden
0 */2 * * * /home/user/sync-data.sh

# Werktags um 8:30 Uhr (Mo-Fr)
30 8 * * 1-5 /home/user/workday-task.sh

# Nur im Januar und Juli, täglich um 12:00
0 12 * 1,7 * /home/user/biannual-report.sh

Häufige Anwendungsfälle

# Tägliches Datenbank-Backup um 2:00 Uhr
0 2 * * * mysqldump -u root -p'password' database > /backup/db_$(date +\%Y\%m\%d).sql

# WordPress Cronjobs (alle 15 Minuten)
*/15 * * * * cd /var/www/html && php wp-cron.php > /dev/null 2>&1

# Log-Dateien täglich rotieren
0 0 * * * /usr/sbin/logrotate /etc/logrotate.conf

# SSL-Zertifikat erneuern (2x täglich prüfen)
0 0,12 * * * certbot renew --quiet

# Alte Dateien löschen (älter als 30 Tage)
0 4 * * * find /tmp -type f -mtime +30 -delete

# Server-Status per E-Mail
0 8 * * * /usr/bin/df -h | mail -s "Disk Report" admin@example.com

Vordefinierte Zeitangaben

Viele Cron-Implementierungen unterstützen spezielle Strings:

@reboot     # Einmal beim Systemstart
@yearly     # Einmal pro Jahr (0 0 1 1 *)
@annually   # Wie @yearly
@monthly    # Einmal pro Monat (0 0 1 * *)
@weekly     # Einmal pro Woche (0 0 * * 0)
@daily      # Einmal pro Tag (0 0 * * *)
@midnight   # Wie @daily
@hourly     # Einmal pro Stunde (0 * * * *)

# Beispiele
@daily /home/user/daily-backup.sh
@reboot /home/user/startup-script.sh

Ausgabe und Logging

Ausgabe in Datei umleiten

# Stdout und Stderr in Datei
0 3 * * * /home/user/backup.sh >> /var/log/backup.log 2>&1

# Nur Stderr in Datei
0 3 * * * /home/user/backup.sh 2>> /var/log/backup-errors.log

# Ausgabe komplett unterdrücken
0 3 * * * /home/user/backup.sh > /dev/null 2>&1

E-Mail-Benachrichtigung

# Am Anfang der Crontab
MAILTO="admin@example.com"

# Für einzelne Jobs deaktivieren
0 3 * * * /home/user/backup.sh > /dev/null 2>&1

Umgebungsvariablen

Cronjobs laufen mit einer eingeschränkten Umgebung:

# Am Anfang der Crontab definieren
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
HOME=/home/user

# Oder im Skript selbst
#!/bin/bash
source /home/user/.bashrc
export PATH=/usr/local/bin:$PATH

# Dann der eigentliche Befehl
...
💡 Tipp: Verwenden Sie in Cronjobs immer absolute Pfade für Befehle und Dateien!

Cronjobs debuggen

Cron-Log prüfen

# Ubuntu/Debian
grep CRON /var/log/syslog

# CentOS/RHEL
cat /var/log/cron

# Live-Monitoring
tail -f /var/log/syslog | grep CRON

Häufige Probleme

Problem Lösung
Skript läuft manuell, aber nicht via Cron PATH-Variable prüfen, absolute Pfade verwenden
Keine Ausgabe/Fehler sichtbar Ausgabe in Log-Datei umleiten
Berechtigungsfehler Skript ausführbar machen: chmod +x script.sh
Job läuft zur falschen Zeit Zeitzone prüfen: timedatectl

System-Crontabs

Neben Benutzer-Crontabs gibt es systemweite Konfigurationen:

# System-Crontab
/etc/crontab

# Verzeichnisse für periodische Jobs
/etc/cron.hourly/
/etc/cron.daily/
/etc/cron.weekly/
/etc/cron.monthly/

# Benutzerdefinierte Crontabs
/etc/cron.d/

Alternativen zu Cron

  • systemd Timer: Moderner, mehr Funktionen, besseres Logging
  • Anacron: Für Systeme, die nicht 24/7 laufen
  • at: Für einmalige, zeitgesteuerte Jobs

Weitere Hilfe

Enjix Beta

Enjyn AI Agent

Hallo 👋 Ich bin Enjix — wie kann ich dir helfen?
120