fcron

Aus wiki.archlinux.de


Die meisten Cron-Implementierungen wie Vixie Cron und DCron gehen von einem System aus, das ohne Unterbrechungen läuft. Das trifft allerdings nur auf Server zu - Laptops werden sehr oft heruntergefahren oder in den Suspend-Modus versetzt. Desktop-Rechner sind in der Regel nachts oder an Urlaubstagen ausgeschaltet, um Energie zu sparen. Bei solchen Einsatzszenarien bleiben Cronjobs unerledigt, wenn der Computer zur fraglichen Zeit nicht lief. Abhilfe für dieses Problem schafft die Cron-Alternative Anacron. Anacron hat aber auch Nachteile: Da das Programm nicht als Daemon läuft, muss es bei Bedarf gestartet werden, entweder manuell, durch Boot-Skripte oder durch Cron selbst. Dieses Problem kann dazu führen, dass Cron und Anacron gleichzeitig laufen, aber eine Aufgabe zwei Mal oder gar nicht erledigt wird.

Fcron ist ein Cron-Daemon, welcher die bereits bekannten Funktionen von Cron und Anacron beherrscht, aber einige nützliche Extras bietet.

Installation

Das Programm ist im community Repo verfügbar. Es kann mittels Pacman installiert werden.

 # pacman -S fcron

Bei Verwendung von SysVinit: Zuerst sollte in der rc.conf bei DAEMONS=(... fcron ...) eingetragen werden. Der Dienst wird ohne d geschrieben im Gegensatz zu vielen anderen bekannten Programmen, siehe Daemons und Daemons/Liste.

Bei Verwendung von systemd: Damit der Dienst gestartet wird, bitte systemctl enable fcron.service ausführen.

Konfiguration

Zuerst bitte die Datei /etc/fcron/fcron.conf prüfen hinsichtlich der dort aufgeführten Optionen. Die mitgelieferten Standardeinstellungen dürften für die meisten Anwendungsfälle geeignet sein.

Für strengere Beschränkungen bitte die Dateien /etc/fcron/fcron.allow und /etc/fcron/fcron.deny bearbeiten.

Die Crontabs werden in der Datei fcrontab definiert. Die Syntax für die Zeiten und Befehle sind denen von Cron identisch. Für die zusätzlichen Features wird eine erweiterte Syntax verwendet, die sich von den klassischen Crontab-Dateien unterscheidet.

Für die systemweiten Jobs bitte als root ausführen:

  • Auflistung
 # fcrontab -l systab
  • Bearbeitung
 # fcrontab -e systab

Folgendes Bsp. zeigt wie Fcron alle Jobs direkt nach dem Starten des Dienstes (z.B. Hochfahren des Rechners) ausführt, wenn dieser zu den angegebenen Zeiten nicht in Betrieb war. Die weiteren Optionen pro Zeile sind selbsterklärend.

 # fcrontab -l systab
 listing systab's fcrontab
 &bootrun,nolog         00 * * * *  /usr/sbin/run-cron /etc/cron.hourly
 &bootrun,nice(8)       05 00 * * * /usr/sbin/run-cron /etc/cron.daily
 &bootrun,mail(root)    10 00 * * 1 /usr/sbin/run-cron /etc/cron.weekly
 &bootrun,erroronlymail 15 00 1 * * /usr/sbin/run-cron /etc/cron.monthly

Weitere Infos