Zum Inhalt springen

Robuste Planung von Wartungsaufgaben: systemd Timer als effektive Alternative zu Cron

27. Februar 2024 durch
Robuste Planung von Wartungsaufgaben: systemd Timer als effektive Alternative zu Cron
Tom Ziegler

Die Planung und Ausführung von Wartungsjobs ist ein wesentlicher Bestandteil der Systemadministration. Traditionell wurde dies durch den Cron-Daemon realisiert, ein Zeit-basierter Job-Scheduler in Unix-ähnlichen Betriebssystemen. Doch es gibt eine effektive Alternative: den systemd Timer. Er bietet robustere Planungsmöglichkeiten, zentralisiertes Logging und kann Ausfälle automatisch nachholen.

Der systemd Timer ist ein Teil des systemd-Systems, das in vielen modernen Linux-Distributionen wie Ubuntu, CentOS und Debian verwendet wird. Im Gegensatz zu Cron, der nur die Ausführung von Jobs zu bestimmten Uhrzeiten oder an bestimmten Tagen ermöglicht, bietet systemd Timer eine größere Flexibilität bei der Planung von Jobs. Er kann zum Beispiel auch auf Systemereignisse reagieren oder Jobs periodisch ausführen, basierend auf der letzten Ausführungszeit und nicht nur auf der Systemzeit.

Zusätzlich zum robusten Zeitplanungsmechanismus bietet der systemd Timer auch eine zentralisierte Log-Funktion. Alle Log-Einträge von systemd werden in einer einzigen Datei gespeichert, was das Durchsuchen und Analysieren von Logs erleichtert. Bei Cron hingegen werden die Logs auf verschiedene Dateien verteilt, was die Fehlersuche erschweren kann.

Ein weiterer Vorteil des systemd Timers ist seine Fähigkeit, ausgefallene Jobs automatisch nachzuholen. Wenn ein Job aus irgendeinem Grund nicht ausgeführt werden konnte, versucht der systemd Timer, ihn zu einem späteren Zeitpunkt nachzuholen. Bei Cron hingegen würde der Job einfach übersprungen werden, wenn er zu seiner geplanten Zeit nicht ausgeführt werden kann.

Beispiel für die Verwendung von systemd Timer:

Angenommen, Sie haben einen Wartungsauftrag, der alle 20 Minuten ausgeführt werden muss. Mit einem Cron-Job würden Sie dies so einrichten:

```

*/20 * * * * /pfad/zum/script.sh

```

Mit einem systemd Timer hingegen würden Sie eine Timer-Datei erstellen, z.B. `/etc/systemd/system/mein.timer` mit folgendem Inhalt:

```

[Unit]

Description=Mein 20-minütiger Timer

[Timer]

OnBootSec=5min

OnUnitActiveSec=20min

[Install]

WantedBy=timers.target

```

und eine zugehörige Service-Datei, z.B. `/etc/systemd/system/mein.service`:

```

[Unit]

Description=Mein Wartungsjob

[Service]

ExecStart=/pfad/zum/script.sh

```

Dann aktivieren und starten Sie den Timer mit:

```

systemctl enable mein.timer

systemctl start mein.timer

```

Insgesamt bietet der systemd Timer eine mächtige und flexible Alternative zum traditionellen Cron-Daemon. Mit seiner robusten Planung, zentralisierten Logging-Funktion und Fähigkeit, ausgefallene Jobs nachzuholen, kann er dazu beitragen, die Effizienz und Zuverlässigkeit Ihrer Systemwartung zu verbessern.

Robuste Planung von Wartungsaufgaben: systemd Timer als effektive Alternative zu Cron
Tom Ziegler 27. Februar 2024
Diesen Beitrag teilen