Cron

Aus xinux.net
Zur Navigation springen Zur Suche springen

Chronos Tabula

  • Der Name leitet sich vom griechischen Wort für Zeit ab
  • Der Entwickler hat sich jedoch verschrieben

Cron-namensherkunft.png

  • Der cron-Daemon ist eine Jobsteuerung für wiederkehrende Aufgaben, die automatisch zu einer bestimmten Zeit aufgeführt werden sollen (cronjobs).
  • z.B. Archivieren und Löschen von Logdateien, Erneuern von Zertifikaten, DynDNS oder andere Programme zur Instandhaltung des Systems
  • Der Cron-Daemon überwacht dazu verschiedene Dateien und Verzeichnisse, in denen Anweisungen liegen, die in regelmäßigen Abständen ausgeführt werden sollen (crontabs).
  • Beim Start des Daemons wird die Tabelle in den Arbeitsspeicher geladen
  • Es wird minütlich nach auszuführenden Jobs und Änderungen im crontab geprüft

Crontabs

  • Um Syntaxfehler zu vermeiden, werden die Tabellen nicht nur mit dem Texteditor bearbeitet, sondern über den Befehl: crontab

User-Crontab

  • Jeder Benutzer des Systems kann eine eigene Crontab erstellen und bearbeiten
  • Die Jobs, die darin aufgeführt sind, werden von Cron unter der jeweiligen Benutzerkennung ausgeführt

Systemweiter Crontab

  • Befindet sich unter /etc/crontab
  • Das Format unterscheidet sich etwas von den Benutzercrontabs

/etc/cron.d/

  • Hier können sich Dateien im selben Format wie in /etc/crontab befinden
  • nützlich für Snippets
  • Alternativ auch in cron.daily, cron.hourly, cron.monthly oder cron.weekly

Aufbau einer Crontab-Datei

* * * * * auszuführender Befehl
┬ ┬ ┬ ┬ ┬
│ │ │ │ │
│ │ │ │ └──── Wochentag (0-7 oder Sun, Mon, Tue,etc) (Sonntag =0 oder =7)
│ │ │ └────── Monat (1-12 oder Jan, Feb, etc)
│ │ └──────── Tag (1-31)
│ └────────── Stunde (0-23)
└──────────── Minute (0-59)

z.B. wöchtenliches Backup der Heimatverzeichnisse aller Benutzer um 3 Uhr morgens:

0 3 * * 1 tar -zcf /var/backups/home.tgz /home/

Beispiele

*/2 - Dieser Eintrag führt die Aufgabe alle 2 Minuten aus.
*/2 * * * * /pfad/zum/skript.sh
1,3,5,9 - Dieser Eintrag führt die Aufgabe zu bestimmten Minuten aus, nämlich 1, 3, 5 und 9.
1,3,5,9 * * * * /pfad/zum/skript.sh
5-9 - Dieser Eintrag führt die Aufgabe von Minute 5 bis Minute 9 in jeder Stunde aus.
5-9 * * * * /pfad/zum/skript.sh

Verwaltung von Crontab

Eigene Crontab anzeigen

  • crontab -l

Crontab eines anderen Benutzers anzeigen

  • crontab -lu Benutzer

Crontab bearbeiten

  • crontab -e

Crontab löschen

  • crontab -r

Crontab aus einer Datei lesen

  • crontab /Pfad/zur/Datei

Cron vs. Daemon (Hintergrundprozess)

  • Ein Daemon läuft immer, d.h.:
    • + Updates laufen häufiger als einmal pro Minute
    • + Es kann sich an seinen vorherigen Status erinnern, falls es notwendig ist
    • - Verbraucht RAM selbst wenn es gerade nichts tut
    • - Memory Leaks sind ein Problem, falls es sie gibt
    • - Abhängig von der Implementation wird es nicht automatisch bei Fehlern neu gestartet
  • Wenn man also eher robuste Aufgaben verteilt, empfiehlt sich Cron.
  • Bei performance-lastigen Aufgaben eher ein Daemon.
Man muss aber je nach Situation selbst entscheiden, was mehr Sinn macht.

Alternative Systemd

  • Systemd-Service Dateien haben auch eine Timer-Funktion, wenn man sie einstellen will.
  • Kann manchmal präziser sein, da Systemd die Zeit ab dem Boot zählt.

Aufgaben