Der Standard-Scheduler Cron ist inzwischen leicht angestaubt. Mit Fcron und Hcron gibt es modernere Alternativen, jeweils mit spezifischen Vorteilen.
Die meisten Rechner laufen nicht rund um die Uhr, schon um Strom zu sparen. Trotzdem will man manche Aufgaben automatisiert in Zeiten abarbeiten, zu denen man nicht vor dem Computer sitzt: Es ist auf die Dauer mühsam, ständig das Backup-Programm manuell zu starten. Mit dem klassischen Scheduler Cron lassen sich derartige Tasks automatisiert abwickeln. Läuft allerdings zum vorgegebenen Zeitpunkt der PC nicht, fällt die automatische Ausführung unter den Tisch.
Regelmäßige Aufgaben sollten Sie daher lieber einem Scheduler überlassen, der nach dem erneutem Einschalten des Computers unerledigte Routineaufgaben nachholt. Dazu haben wir unter Fedora 29 die Scheduler Fcron [1] und Hcron [2] anhand des Programms Backup-Manager [3] auf Herz und Nieren getestet.
Die Konfiguration von Hcron behandelte bereits unsere Schwesterzeitschrift Raspberry Pi Geek ausführlich [4]. Daher widmet sich dieser Artikel vorwiegend Fcron, um zum Schluss die Vor- und Nachteile beider Scheduler abzuwägen.
Installation
Für Hcron erhalten Sie auf der Projektwebseite RPM- und DEB-Pakete, die Sie nach dem Herunterladen bequem über die jeweilige Paketverwaltung ins System einbinden.
Fcron dagegen lässt sich nur manuell installieren (Listing 1) und benötigt zum Funktionieren den Compiler GCC sowie Sendmail. Es gibt auch ein grafisches Frontend namens FcronQ [5], das auf das GUI-Framework Qt zurückgreift. Demzufolge müssen Sie dafür die Qt-Bibliothek für Python 3 sowie Python 3 selbst einrichten (Listing 2, erste Zeile). Zu FcronQ gibt es ausschließlich Quellen, die Sie herunterladen, entpacken und installieren (Listing 2, folgende Zeilen).
Listing 1
# dnf install gcc sendmail [...] $ wget http://fcron.free.fr/archives/fcron-3.2.1.src.tar.gz $ tar xvf fcron-3.2.1.src.tar.gz $ cd fcron-3.2.1 $ ./configure $ gmake [...] # gmake install
Listing 2
# dnf install python3 python3-PyQt5 python3-PyQt4 [...] $ wget https://downloads.sourceforge.net/project/fcronq/FcronQ/0.5.0/FcronQ-0.5.0.tar.bz2 $ tar xvf FcronQ-0.5.0.tar.bz2 $ cd FcronQ/Build/ $ make all $ make install-user [... für Root einrichten ...] # make install
Haben Sie einen der beiden Scheduler eingerichtet, aktivieren Sie den Dienst mit administrativen Rechten und starten das Programm im Hintergrund. Im Fall von Hcron ändern Sie dabei in den Kommandos aus Listing 3 den Dienstenamen von fcron zu hcron.
Listing 3
# systemctl enable fcron # systemctl start fcron
Fakten zu Fcron
In der Konfigurationsdatei /etc/fcron.conf, stellen Sie die Pfade der Fcron-Dateien sowie die Pfade zu einigen Programmen ein. Um die Tasks später mit Ihrem Lieblingseditor zu bearbeiten, passen Sie dort die Variable editor an. Zusätzlich lässt sich bestimmen, wer Fcron benutzen darf (/etc/fcron.allow und /etc/fcron.deny). In der Standardeinstellung dürfen alle Benutzer auf Fcron zugreifen.
Auf der Konsole legen Sie dann mithilfe des Befehls fcrontab -e einen Task an. Fcron öffnet dann im konfigurierten Editor eine Datei, in der Sie die Tasks bearbeiten, auskommentieren, erstellen oder löschen. Die Aufgaben folgen dabei der Struktur Optionen Häufigkeit Befehl.
Die Tabelle “Fcrontab-Optionen” fasst wichtige Optionen sowie deren Verwendung zusammen. Beginnt eine Option mit einem Ausrufezeichen !, gilt sie für alle folgenden Zeilen oder bis zum nächsten !reset. Ein führendes %, @ oder & dagegen signalisiert, dass sie nur innerhalb der Zeile greift.
|
Option |
Beispiel |
Funktion |
|---|---|---|
|
|
|
Führt einen Job nach dem Start von Fcron oder dem Hochfahren des Systems aus. |
|
|
|
Job um bis zu 255 Sekunden verzögern, falls mehrere Jobs zur selben Zeit starten. |
|
|
|
User per E-Mail über das Job-Ergebnis informieren. |
|
|
|
Fügt Adresse oder Benutzername samt Domäne ins Von-Feld ein. |
|
|
|
Fügt Adresse oder Benutzername samt Domäne ins Von-Feld ein. |
|
|
|
Job-Priorität von |
|
|
|
Im Protokoll nur Fehlermeldungen vermerken. |
|
|
|
Informiert den User per E-Mail, falls ein Job nicht verarbeitet wurde. |
|
|
|
Wie Jitter, aber mit einer Zufallszahl. |
|
|
|
Optionseinstellungen zurücksetzen. |
|
|
|
Job mit den Rechten des angegebenen Users verarbeiten. |
|
|
|
Job unmittelbar nach dem Hochfahren des Systems starten. |
|
|
|
Job nicht erneut einplanen, nach dem er einmal ausgeführt wurde. |
|
|
|
Konsolenausgabe, falls Fcron im Vordergrund läuft. |
|
|
|
Job-Angaben gelten für die angegebene Zeitzone. |
Wie oft ein Befehl verarbeitet wird, definieren Sie durch die Angabe eines Zeitpunkts in der Notation Minute Stunde Tag Monat Wochentag. Die möglichen Wertebereiche finden Sie in der Tabelle “Zeit unter Fcron”; eine beliebige Angabe signalisieren Sie durch ein Sternchen. Als Befehl tragen Sie einen Aufruf so ein, wie Sie ihn auch auf der Befehlszeile eingeben würden. Listing 4 zeigt dazu einige Beispiele.
|
Feld |
Werte |
|---|---|
|
Minute |
|
|
Stunde |
|
|
Tag |
|
|
Monat |
|
|
Wochentag |
|
Listing 4
## Sonntags und am 31. um 10:05 Uhr den Echo-Befehl ausführen. 5 10 31 * 7 echo '' ## Jeden Tag um 5:05, 5:35, 6:05, 6:35, 7:05 und 7:35 Mycommand ausführen. & 05,35 5-7 * * * mycommand -u me -o file ## Täglich 20, 21, 22 und 24 Minuten nach der vollen Stunde E-Mails abholen. 20-24~23 * * * * getmail ## Alle 30 Minuten E-Mails abholen. @ 30 getmails -all ## Täglich außer sonntags um 03:45 den Save-Befehl mit niedriger Priorität ## ausführen und den User 'jim' darüber informieren. Job nach dem Hochfahren ## verarbeiten, falls der PC zur geplanten Zeit nicht lief. &nice(10),mailto(jim),bootrun 45 03 * * *~0 "save --our work"
Nach dem Speichern der Fcrontab-Datei schlagen Sie mittels des Befehls fcrontab -l nach, welche Tasks der aktuelle Benutzer angelegt hat.
FcronQ
Statt auf der Kommandozeile konfigurieren Sie Fcron alternativ über das grafische Frontend FcronQ, das Sie mit FcronQ.pyw aufrufen. Um die Fehlermeldung beim Öffnen des Programms zu vermeiden, fügen Sie Ihren Benutzer noch mit administrativen Rechten der Gruppe Fcron hinzu:
# usermod -a -G fcron User
Links unten im Interface sehen Sie, ob der Fcron-Dämon gerade läuft (Abbildung 1). Rechts neben der Statusanzeige wählen Sie den Benutzer aus, für den Sie neue Tasks anlegen möchten. Nach einem Rechtsklick in den Eingabebereich legen Sie sich durch Auswahl von Append einen neuen Task an. In der Spalte Status (de-)aktivieren Sie einzelne Tasks durch Setzen oder Entfernen des entsprechenden Häkchens. Des Weiteren können Sie den Task mit einem Kommentar versehen.

Abbildung 1: Im Prinzip ähnelt FcronQ mehr einem Texteditor, gibt es doch für die Parameter keine speziellen Eingabemasken.
Unter Variables, Options lässt sich durch einen Doppelklick eine Option eintragen. Die Spalte Frequency beherbergt die Zeitangaben, Command den zu verarbeiteten Befehl. Um einen Befehl zu testen, rufen Sie das Kontextmenü des jeweiligen Tasks über die rechte Maustaste auf und klicken auf Run. Klappt alles, speichern Sie den oder die neuen Tasks über Action | Save.
Fakten zu Hcron
Hcron setzt bei der Konfiguration auf Schlüssel-Wert-Paare, sodass Sie hier nicht wissen müssen, an welcher Stelle der Aufrufsyntax Sie die Minuten, Stunden, Tage und so weiter eintragen müssen (siehe Tabelle “Hcron-Schlüssel”). Wie bei Fcron dürfen Sie auch hier Sternchen für beliebige Angaben verwenden. Die einzelnen Aufgaben heißen bei Hcron Events und lassen sich übersichtlich in gesonderten Dateien abspeichern.
|
Schlüssel |
Funktion |
|---|---|
|
Pflichtangaben |
|
|
|
Hostname |
|
|
auzuführender Befehl |
|
|
E-Mail-Adresse für Benachrichtigung |
|
|
Benachrichtigungstext |
|
|
Ausführung: Monat (1 bis 12) |
|
|
Ausführung: Tag des Monats (1 bis 31) |
|
|
Ausführung: Stunde (0 bis 23) |
|
|
Ausführung: Minute (0 bis 59) |
|
|
Ausführung: Wochentag (0 bis 6, 0 = Sonntag) |
|
Optionale Angaben |
|
|
|
Benutzerkonto zum Ausführen des Befehls |
|
|
alternativer Event bei Scheitern |
|
|
nächsten Event nach dem erfolgreichen Start eines Events ausführen |
|
|
Betreff der E-Mail-Benachrichtigung |
|
|
Ausführung: Jahr (2000 bis 2050) |
Die Konfigurationsdateien des Schedulers finden Sie im Ordner /etc/hcron/. Dort tragen Sie in der Datei hcron.allow den Benutzernamen des Benutzers ein, die Befehle aus einer Event-Datei ausführen dürfen. Des Weiteren brauchen Sie ein Verzeichnis für die Events dieses Users. Es muss in einem untergeordneten Ordner liegen, der die Domain als Namen hat. Diese ermitteln Sie mit dem Befehl aus der ersten Zeile von Listing 5.
Dann legen Sie das korrespondierende Events-Verzeichnis an (Zeile 3). Dort erzeugen Sie mithilfe des Kommandos hcron-event eine leere Event-Datei (in unserem Beispiel heißt sie event-backup.txt), die bereits die wichtigsten Schlüssel enthält (Zeile 4).
Listing 5
$ hcron-info --fqdnFQDN $ mkdir -p ~/.hcron/FQDN/events $ hcron-event ~/.hcron/FQDN/events/event-backup.txt [... Event-Datei befüllen ...] $ hcron-info allowed yes $ hcron-info es accepted::/event-backup.txt
Um einen Hcron-Event für Backup-Manager zu erstellen, der täglich um 21:10 Uhr einen Sicherungslauf vornimmt, tragen Sie in event-backup.txt die in Listing 6 gezeigten Schlüssel und Werte ein. Nach dem Speichern der Datei fragt Hcron Sie, ob es den Scheduler neu starten soll, was Sie durch einen Druck auf [Y] bestätigen. Wenn Sie später eine existierende Event-Datei nachbearbeiten, müssen Sie lediglich den Hcron-Scheduler mit hcron-reload erneut starten, um Hcron die Änderungen mitzuteilen.
Listing 6
# event-backup.txt as_user=User host=FQDN command=sudo backup-manager notify_email=User@FQDN notify_message=done when_month=* when_day=* when_hour=21 when_minute=10 when_dow=*
Zu guter Letzt überprüfen Sie mit den Aufrufen aus den Zeilen 6 und 8 von Listing 5 noch einmal, ob der aktuelle Nutzer auch wirklich Hcron-Events ausführen darf und um welche es sich dabei handelt.
Konkurrenzbetrachtung
Der etablierte Scheduler Vixie-Cron sowie dessen Fork Cronie kommen auf etlichen Distributionen standardmäßig zum Einsatz. Im Gegensatz zu Fcron nehmen weder Cron noch Vixie-Cron den Betrieb wieder auf, wenn der Rechner einmal nicht lief. Das kann eine weitere Scheduler-Alternative namens Anacron.
Auch für Cron existieren grafische Frontends, wie etwa Kcron [6]. Es gibt sogar Webseiten, auf denen Sie online einen Cron-Job erstellen können [7]. Die Syntax eines Standard-Jobs lautet bei Cron und Fcron gleich, sodass Sie Cron-Jobs einfach in die entsprechende Fcrontab-Datei umkopieren können. Sie liegt normalerweise im Verzeichnis /usr/var/spool/fcron/. Zusätzlich beherbergt die Fcron-Syntax Shortcuts von Vixie-Cron, sodass auch der Umstieg von Vixie-Cron zu Fcron leichtfällt.
Neben einem umfassenden Online-Tutorial [8] mit etlichen Beispielen bietet Fcron erweiterte Funktionen, die unter anderem für Lasttests nützlich sind. So lässt sich ein Skript mehrere Male die Minute ausführen [9], was bei der Konkurrenz nur durch den Befehl sleep gelingt. Weitere Unterschiede hebt die Tabelle “Fcron vs. Cron/Anacron” hervor.
|
Fcron |
Cron |
|---|---|
|
kein 24/7-Betrieb erforderlich |
unterbrochener Betrieb erfordert zusätzlich Anacron |
|
Dämon |
Cron: Dämon, Anacron: kein Dämon |
|
Tasks mehrmals täglich ausführbar |
Cron: mehrmals täglich, Anacron: nur täglich |
|
umfangreiches Tutorial |
mehrere Tutorials online |
|
manuelle Installation |
Installation via Paketmanager |
|
nur eine GUI verfügbar |
mehrere GUIs zur Auswahl |
|
erweiterte Syntax |
weniger Funktionen |
Fazit
Fcron gibt sich wie Cron relativ sperrig in der Bedienung, während Hcron sich durch die Verwendung von Schlüssel-Wert-Paaren einfacher handhaben lässt. Zudem erzeugt Hcron auf Anforderung ein Template mit allen obligatorischen Schlüsseln, sodass man nur noch die entsprechenden Werte eintragen muss. Darüber hinaus lässt sich Hcron einfacher installieren und bietet eine bessere Protokollierung. Letztendlich sollten Sie anhand der konkreten Einsatzanforderungen entscheiden, welcher Scheduler sich für Ihre Anforderungen am besten eignet.
Infos
- Fcron: http://fcron.free.fr
- Hcron: https://expl.info/display/HCRON/Home
- Backup-Manager: https://github.com/sukria/Backup-Manager
- Effektive Datensicherung: Anzela Minosi, “Weggepackt”, RPG 03-04/2019, S. 18, http://www.raspberry-pi-geek.de/41974
- FcronQ: https://sourceforge.net/projects/fcronq
- Kcron: https://www.selflinux.org/selflinux/html/kde_kcron02.html
- Online-Tools: https://www.tecmint.com/online-cron-job-generator-and-tester-for-linux
- Fcrontab-Tutorial: http://fcron.free.fr/doc/en/fcrontab.5.html
- Fcron sekündlich: https://lemnisk8.com/cron-in-seconds





