AI-TOL
⚖️ Comparison 📊 Updated 2026-05-27

Cron

Klassischer Unix-Auftragsplaner

VS
⚙️

Systemd Timer

Moderniser dienstbasierter Scheduler

Umfassender Vergleich zwischen Cron- und Systemd-Timer-Schedulern. Erfahren Sie, wann Sie welchen verwenden, ihre Funktionen, Vor- und Nachteile und wie Sie zwischen ihnen migrieren.

Quick Comparison

Feature
Cron
⚙️ Systemd Timer
Planungsstil Nur zeitbasiert Zeit- oder ereignisbasiert
Granularität Minuten Mikrosekunden
Abhängigkeiten Keine Volle Unterstützung
Protokollierung Basis-E-Mail/Log journald-Integration
Pro-Benutzer-Jobs Ja Ja
Monotone Timer Nein Ja
Ressourcen-Tracking Nein Ja (cgroups)
Plattformabdeckung Universell Nur systemd
Lernkurve Einfach Mäßig
Container-freundlich Ausgezeichnet Schlecht

Kernfunktionen

Planungsgenauigkeit

Systemd Timer Wins

Cron: Minutenebene

⚙️

Systemd Timer: Mikrosekundenebene

💡 Why: Systemd-Timer unterstützen feinere Planung mit Mikrosekunden-Genauigkeit, während cron nur Minutengenauigkeit unterstützt.

Echtzeit-Planung

Tie

Cron: ✅ Volle Unterstützung

⚙️

Systemd Timer: ✅ Volle Unterstützung

💡 Why: Beide unterstützen traditionelle zeitbasierte Planung (z.B. "jeden Tag um 3 Uhr").

Monotone Timer

Systemd Timer Wins

Cron: ❌ Nicht unterstützt

⚙️

Systemd Timer: ✅ Volle Unterstützung

💡 Why: Systemd unterstützt Timer basierend auf Zeit seit Start oder anderen Ereignissen, was cron nicht kann.

Ereignisauslöser

Systemd Timer Wins

Cron: ❌ Keine

⚙️

Systemd Timer: ✅ Mehrere Ereignisse

💡 Why: Systemd kann bei Hardware-Ereignissen, Pfadänderungen und anderen Systemereignissen auslösen.

Konfiguration & Verwaltung

Konfigurationsformat

Cron Wins

Cron: Crontab (einfach)

⚙️

Systemd Timer: INI-Stil Einheiten

💡 Why: Cron verwendet ein einfaches, gut bekanntes crontab-Format. Systemd verwendet komplexere Einheitsdateien.

Pro-Benutzer-Planung

Tie

Cron: ✅ Unterstützt

⚙️

Systemd Timer: ✅ Unterstützt

💡 Why: Beide unterstützen pro-Benutzer-Planung (Benutzer-crontabs vs systemd-Benutzereinheiten).

Umgebungsvariablen

Systemd Timer Wins

Cron: Eingeschränkt

⚙️

Systemd Timer: Volle Unterstützung

💡 Why: Systemd bietet bessere Umgebungsvariablen-Verwaltung durch Dienstdateien.

Abhängigkeitsverwaltung

Systemd Timer Wins

Cron: ❌ Keine

⚙️

Systemd Timer: ✅ Volle Unterstützung

💡 Why: Systemd-Timer können von Diensten, Sockets, Targets und anderen Einheiten abhängen.

Protokollierung & Überwachung

Eingebaute Protokollierung

Systemd Timer Wins

Cron: E-Mail/Logs

⚙️

Systemd Timer: journald

💡 Why: Systemd integriert eng mit journald für strukturierte, durchsuchbare Protokolle.

Job-Verlauf

Systemd Timer Wins

Cron: Eingeschränkt

⚙️

Systemd Timer: ✅ Verfolgt

💡 Why: Systemd behält detaillierte Historie von Timer-Auslösungen und Dienst-Ergebnissen.

Ressourcenüberwachung

Systemd Timer Wins

Cron: ❌ Keine

⚙️

Systemd Timer: ✅ cgroups

💡 Why: Systemd verfolgt die Ressourcennutzung über cgroups für jeden Dienst.

Fehlerbehandlung

Systemd Timer Wins

Cron: Nur E-Mail

⚙️

Systemd Timer: Mehrere Optionen

💡 Why: Systemd unterstützt on-failure-Auslöser, Neustart-Richtlinien und abhängigkeitsbasierte Reaktionen.

Leistung & Ressourcen

Speichernutzung

Cron Wins

Cron: ~1-2 MB

⚙️

Systemd Timer: ~5-10 MB

💡 Why: Cron-Daemon verwendet minimalen Speicher. Systemd läuft bereits, Timer fügen vernachlässigbaren Overhead hinzu.

Startzeit

Systemd Timer Wins

Cron: Schnell

⚙️

Systemd Timer: Sofort

💡 Why: Systemd ist Teil von init, läuft bereits beim Boot.

Skalierbarkeit

Systemd Timer Wins

Cron: Gut

⚙️

Systemd Timer: Ausgezeichnet

💡 Why: Systemd verarbeitet tausende Einheiten effizienter mit modernem Prozessmanagement.

Systemintegration

Systemd Timer Wins

Cron: Eigenständig

⚙️

Systemd Timer: Integriert

💡 Why: Systemd-Timer sind nativ für systemd-basierte Systeme.

Plattform & Kompatibilität

Linux-Unterstützung

Cron Wins

Cron: ✅ Universell

⚙️

Systemd Timer: Nur systemd

💡 Why: Cron funktioniert auf allen Linux-Systemen. Systemd-Timer nur auf systemd-basierten Distributionen.

Unix/BSD-Unterstützung

Cron Wins

Cron: ✅ Ja

⚙️

Systemd Timer: ❌ Nein

💡 Why: Cron ist auf fast allen unixoiden Systemen verfügbar.

macOS-Unterstützung

Cron Wins

Cron: ✅ launchd/cron

⚙️

Systemd Timer: ❌ Nein

💡 Why: macOS verwendet launchd (nicht systemd), aber cron ist verfügbar.

Container-Unterstützung

Cron Wins

Cron: ✅ Einfach

⚙️

Systemd Timer: Komplex

💡 Why: Cron funktioniert in minimalen Containern. Systemd benötigt volles systemd-init.

Practical Examples

Einfache tägliche Sicherung

Cron

                    # Sicherung um 2 Uhr morgens
0 2 * * * /root/backup.sh
                  
[Unit] Description=Tägliche Sicherung [Timer] OnCalendar=*-*-* 02:00:00 Persistent=true [Install] WantedBy=timers.target

Cron ist einfacher für diese einfache Aufgabe. Systemd benötigt zwei Dateien (Timer + Service), bietet aber Persistenz über Neustarts hinweg.

15 Minuten nach Boot ausführen

Cron

                    # Nicht einfach unterstützt
# Würde @reboot mit sleep benötigen
                  
[Timer] OnBootSec=15min [Service] ExecStart=/usr/local/bin/startup-task.sh

Systemd unterstützt Boot-verzögerte Ausführung nativ. Cron würde komplexe Workarounds erfordern.

Ausführen, wenn Netzwerk oben ist

Cron

                    # Nicht unterstützt
                  
[Unit] After=network-online.target Wants=network-online.target [Timer] OnBootSec=0 [Service] ExecStart=/usr/bin/update-app

Systemd kann auf bestimmte Systemzustände warten. Cron hat keine Abhängigkeitswahrnehmung.

Migration Guide

Cron → Systemd Timer

  • Erstellen Sie sowohl .timer- als auch .service-Dateien (cron-Eintrag = Timer + Service kombiniert)
  • Verwenden Sie OnCalendar für zeitbasierte Planung (konvertiert cron-Ausdrücke)
  • Verwenden Sie Persistent=true, um Jobs auszuführen, die während Ausfallzeiten verpasst wurden
  • Verschieben Sie Umgebungsvariablen von crontab zu [Service] Environment=
  • Ersetzen Sie E-Mail-Ausgabe durch journald-Protokollierung
  • Konvertieren Sie Benutzer-crontabs zu systemd-Benutzereinheiten (~/.config/systemd/user/)
  • Verwenden Sie systemctl list-timers, um alle Timer anzuzeigen (ähnlich wie crontab -l)

Cron → Systemd Timer

  • Verlieren Sie Abhängigkeitsverwaltung - Skript muss Abhängigkeiten behandeln
  • Konvertieren Sie OnCalendar zu cron-Ausdrücken (Minute Stunde Tag Monat Wochentag)
  • Ersetzen Sie monotone Timer (OnBootSec) durch @reboot und sleep
  • Entfernen Sie ereignisbasierte Auslöser (cron ist zeit-only)
  • Umgebungsvariablen gehen in crontab oder Skript
  • Protokollierung muss manuell gehandhabt werden (syslog, benutzerdefinierte Dateien)
  • Keine eingebaute Persistenz - letzten Lauf manuell in Skripten verfolgen

Frequently Asked Questions

Welches sollte ich für einen neuen Linux-Server wählen?
Für moderne systemd-basierte Distributionen (RHEL 7+, Ubuntu 15.04+, etc.) bevorzugen Sie systemd-Timer, es sei denn, Sie benötigen Portabilität. Sie bieten bessere Protokollierung, Abhängigkeiten und Integration. Verwenden Sie cron nur, wenn Sie Cross-Plattform-Kompatibilität benötigen oder mit minimalen Containern arbeiten.
Können cron und systemd-Timer koexistieren?
Ja! Sie können sowohl cron als auch systemd-Timer auf demselben System ausführen. Viele Distributionen enthalten beide. Vermeiden Sie jedoch, denselben Job mit beiden zu planen, um Konflikte zu vermeiden.
Wie zeige ich alle geplanten Aufgaben wie crontab -l an?
Für systemd verwenden Sie `systemctl list-timers --all`, um alle Timer anzuzeigen. Für Benutzertimer fügen Sie `--user` hinzu. Dies zeigt ähnliche Informationen wie crontab -l mit nächsten Auslösezeiten.
Funktionieren systemd-Timer in Docker-Containern?
Im Allgemeinen nein. Systemd-Timer benötigen systemd als PID 1, was die meisten Docker-Container nicht ausführen. Verwenden Sie für Container cron oder externe Scheduler (Kubernetes CronJobs, AWS EventBridge, etc.).
Wird cron deprecated?
Nein. Cron wird noch aktiv gepflegt und in allen wichtigen Distributionen enthalten. Systemd-Timer sind eine Alternative, kein Ersatz. Cron bleibt wichtig für nicht-systemd-Systeme und portable Skripte.
Können systemd-Timer bei Versagen E-Mails senden wie cron?
Nicht nativ. Systemd verlässt sich auf journald-Protokollierung. Sie können jedoch `OnFailure=`-Direktiven konfigurieren, die Skripte auslösen, die E-Mails senden, oder Überwachungstools verwenden, die Journal-Protokolle überwachen.
Welches verwendet weniger Systemressourcen?
Cron-Daemon verwendet ~1-2 MB RAM. Systemd läuft bereits als init, Timer fügen vernachlässigbaren Overhead hinzu. Der Unterschied ist auf modernen Systemen unbedeutend. Wählen Sie basierend auf Funktionen, nicht Ressourcennutzung.
Wie plane ich einen Job, der alle 10 Sekunden läuft?
Weder cron noch systemd ist dafür ideal. Cron unterstützt nur Minutengranularität. Systemd unterstützt theoretisch Millisekunden, ist aber nicht empfohlen. Verwenden Sie für subminütige Intervalle einen einfachen Loop-Skript, Supervisor oder anwendungslevel Scheduler.

Verdict: Keiner - Wahl basierend auf Anforderungen

Sowohl cron als auch systemd-Timer sind leistungsstarke Job-Scheduler, die unterschiedliche Bedürfnisse erfüllen. **Cron bleibt die universelle Wahl** für einfache, portable Planung auf allen unixoiden Systemen. **Systemd-Timer glänzen** auf modernen Linux-Distributionen, die komplexe Abhängigkeiten, Ereignisauslöser und integrierte Protokollierung erfordern.

Recommendation

Verwenden Sie **cron** für einfache periodische Aufgaben, Cross-Plattform-Kompatibilität, Legacy-Systeme und Container. Verwenden Sie **systemd-Timer** für moderne Linux-Server, Service-Orchestrierung, ereignisgesteuerte Planung und wenn Sie enge Integration mit Systemdiensten benötigen.

Related Resources