Zum Inhalt

Cron-Jobs unter Linux einrichten & verwalten

Cron-Jobs unter Linux einrichten & verwalten

Cron-Jobs unter Linux einrichten & verwalten

Zusammenfassung: Dieser Artikel dokumentiert die Einrichtung und Verwaltung von Cron-Jobs unter Linux. Es werden die crontab-Syntax mit praktischen Beispielen, die Unterschiede zwischen Benutzer-crontab und System-Cron-Verzeichnissen sowie systemd-Timer als moderne Alternative erläutert.


1. crontab-Grundlagen

Der cron-Daemon führt geplante Aufgaben zu definierten Zeitpunkten aus. Die Konfiguration erfolgt über die crontab-Datei des jeweiligen Benutzers.

Crontab bearbeiten

crontab -e

Beim ersten Aufruf wird ein Editor ausgewählt (Standard: nano). Für dauerhaft nano:

EDITOR=nano crontab -e

Crontab anzeigen / löschen

crontab -l          # Aktuelle crontab anzeigen
crontab -r          # Crontab vollständig löschen (Vorsicht!)
crontab -l > backup.txt  # Sicherungskopie erstellen

2. Syntax

* * * * * /pfad/zum/befehl
│ │ │ │ │
│ │ │ │ └── Wochentag (0–7, 0 und 7 = Sonntag)
│ │ │ └──── Monat (1–12)
│ │ └────── Tag (1–31)
│ └──────── Stunde (0–23)
└────────── Minute (0–59)

Sonderwerte

Ausdruck Bedeutung
* Jeder Wert
*/5 Alle 5 Einheiten (z. B. alle 5 Minuten)
1,15 Wert 1 und 15
1-5 Bereich von 1 bis 5
@reboot Einmalig beim Systemstart
@daily Täglich um 00:00
@weekly Wöchentlich
@monthly Monatlich

3. Praktische Beispiele

# Jeden Tag um 03:00 Uhr ein Backup-Skript ausführen
0 3 * * * /home/benutzer/skripte/backup.sh

# Alle 15 Minuten einen Sync-Befehl ausführen
*/15 * * * * /usr/bin/rsync -a /quelle/ /ziel/

# Jeden Montag um 08:00 einen Wochenbericht erstellen
0 8 * * 1 /home/benutzer/skripte/wochenbericht.sh

# Beim Systemstart ein Skript ausführen
@reboot /home/benutzer/skripte/start.sh

# Jeden 1. des Monats um 00:00 Log-Dateien archivieren
0 0 1 * * tar -czf /backup/logs-$(date +\%Y\%m).tar.gz /var/log/app/

4. Ausgabe in Log-Datei umleiten

Cron sendet Ausgabe standardmäßig per E-Mail. Für Systeme ohne Mail-Setup empfiehlt sich die Umleitung in eine Datei:

# Nur stdout in Datei schreiben
0 3 * * * /pfad/skript.sh >> /var/log/mein-cron.log 2>&1

# Ausgabe komplett verwerfen (kein Log)
0 3 * * * /pfad/skript.sh > /dev/null 2>&1

5. System-Cron-Verzeichnisse

Für systemweite Aufgaben (als Root) stehen vordefinierte Verzeichnisse bereit:

Verzeichnis Ausführungsintervall
/etc/cron.daily/ Täglich
/etc/cron.weekly/ Wöchentlich
/etc/cron.monthly/ Monatlich
/etc/cron.hourly/ Stündlich
/etc/cron.d/ Eigene Zeitpläne (crontab-Format)

Skripte in diesen Verzeichnissen müssen ausführbar sein (chmod +x) und dürfen keine Dateiendung haben.


6. Alternative: systemd-Timer

Auf modernen Systemen sind systemd-Timer die bevorzugte Alternative zu Cron, da sie besser in das Logging integriert sind.

Beispiel: Täglicher Timer

Service-Datei /etc/systemd/system/backup.service:

[Unit]
Description=Tägliches Backup

[Service]
Type=oneshot
ExecStart=/home/benutzer/skripte/backup.sh

Timer-Datei /etc/systemd/system/backup.timer:

[Unit]
Description=Backup täglich um 03:00

[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true

[Install]
WantedBy=timers.target

Aktivieren:

sudo systemctl enable --now backup.timer
systemctl list-timers  # Alle aktiven Timer anzeigen

Hat euch dieser Beitrag gefallen?

Dann lasst gern ein Like da.

Kommentare

Noch keine Kommentare.
Neuen Kommentar schreiben

Deine E-Mail wird nicht veröffentlicht. Bei Antworten erhältst du eine Benachrichtigung.