Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Basics<br />
Whenjobs<br />
© stillfx, 123RF<br />
Die einfachere Alternative zu Cron: Whenjobs<br />
Neue Zeitrechnung<br />
Cronjobs sind bei der Administration von Linux- <strong>und</strong> Unix-Systemen unverzichtbar.<br />
Allerdings ist die Syntax sehr beschränkt <strong>und</strong> fehleranfällig.<br />
Ein moderner Cron-Ersatz will <strong>mit</strong> diesen Schwächen aufräumen. Oliver Frommel<br />
Eines der vielen Erbstücke aus den Urzeiten<br />
von Unix (seit V7 Unix, um genau<br />
zu sein) ist der Cron-Daemon, der auch<br />
auf heutigen Linux- <strong>und</strong> BSD-Systemen<br />
regelmäßige Jobs ausführt. Zwar haben<br />
sich im Lauf der Zeit einige Alternativen<br />
entwickelt, wie etwa Fcron [1] <strong>und</strong> Anacron[2],<br />
doch am Gr<strong>und</strong>prinzip hat sich<br />
wenig geändert.<br />
Der Red-Hat-Programmierer Richard W.M.<br />
Jones hat nun unter dem Namen „Whenjobs“<br />
in Eigenregie eine Cron-Alternative<br />
entwickelt, die alte Zöpfe abschneidet. Im<br />
Wesentlichen bietet Whenjobs [3] gegenüber<br />
Cron zwei Vorteile: eine einfachere<br />
Syntax, um Jobs <strong>und</strong> Ausführungszeitpunkte<br />
festzulegen <strong>und</strong> ein System, das<br />
es ermöglicht, Abhängigkeiten zwischen<br />
Jobs zu definieren.<br />
Für Fedora 17 gibt es bereits fertige Pakete<br />
von Whenjobs, Benutzer anderer<br />
Distributionen müssen das Tool selbst<br />
übersetzen. Zur Installation können Sie<br />
Whenjobs aus dem Git-Repository auschecken.<br />
Einfacher ist es allerdings, das<br />
neueste Tarfile herunterzuladen, denn so<br />
müssen Sie sich wenigstens nicht noch<br />
<strong>mit</strong> Autoconf <strong>und</strong> Automake herumschlagen.<br />
Weil Whenjobs in der funktionalen<br />
Programmiersprache Ocaml geschrieben<br />
ist, brauchen Sie den entsprechenden<br />
Compiler <strong>und</strong> noch ein paar Pakete, die<br />
sich zum Beispiel auf Ubuntu 12.10 <strong>mit</strong><br />
dem folgenden Befehl installieren lassen:<br />
sudo apt‐get install ocaml ocaml‐findlibU<br />
libcalendar‐ocaml libcalendar‐ocaml‐dev U<br />
camlp4‐extra libocamlnet‐ocaml‐bin<br />
Der Befehl »./configure« startet die Konfiguration,<br />
die verrät, ob alle nötigen<br />
Pakete installiert sind. Im Test trat bei<br />
der darauf folgenden Übersetzung per<br />
»make« der Fehler »Error: Unbo<strong>und</strong> value<br />
Xdr.safe_add« auf, der sich dadurch<br />
beheben ließ, die erzeugten Dateien<br />
»lib/whenproto_aux.ml« <strong>und</strong> »lib/whenproto_aux.mli«<br />
zu löschen. Ein Aufruf<br />
von »make install« installiert Whenjobs<br />
anschließend systemweit.<br />
Mit der Option »‐‐help« gestartet, gibt<br />
»whenjobs« einen kurzen Hilfetext aus,<br />
der die verfügbaren Optionen <strong>und</strong> Parameter<br />
anzeigt (Abbildung 1). Mit<br />
»whenjobs ‐e« startet das Programm einen<br />
Editor, der beim ersten Start schon<br />
ein Whenjobs-File enthält, das allerdings<br />
nur aus einem Kommentar besteht (Abbildung<br />
2). Wie der Vi-Editor in der<br />
Abbildung zeigt, handelt es sich dabei<br />
um die Datei ».$HOME/whenjobs/jobs.<br />
ml«. Bei Syntax-Fehlern im Jobs-File reagiert<br />
Whenjobs recht unwirsch <strong>und</strong> gibt<br />
einfach eine Compiler-Fehlermeldung<br />
aus, speichert die Datei aber trotzdem.<br />
Statt der einen Datei dürfen auch mehrere<br />
Dateien <strong>mit</strong> der Endung ».ml« in<br />
».whenjobs« abgelegt werden, allerdings<br />
muss man sie dann von Hand editieren.<br />
Außerdem müssen die Dateinamen den<br />
Ocaml-Regeln entsprechen, dürfen also<br />
keinen Bindestrich enthalten.<br />
Die Gr<strong>und</strong>lagen der Whenjobs-Dateien<br />
sind in diesem Kommentar erklärt. Kommentare<br />
beginnen <strong>mit</strong> »(*« <strong>und</strong> enden<br />
<strong>mit</strong> »*)« – was ein dezenter Hinweis<br />
darauf ist, dass es sich bei Whenjobs-<br />
Files selbst um Ocaml-Dateien handelt<br />
– normalerweise muss man sich <strong>mit</strong> der<br />
Programmiersprache aber bei der Whenjobs-Benutzung<br />
nicht beschäftigen. Eine<br />
Zeitangabe startet <strong>mit</strong> dem Schlüsselwort<br />
»every« <strong>und</strong> endet <strong>mit</strong> einem Doppelpunkt,<br />
zum Beispiel:<br />
every 10 minutes:<br />
Die Zeichen »« abschließen.<br />
Variabel<br />
Das Beispiel in den Kommentaren illustriert<br />
einige Whenjobs-Features, zum<br />
Beispiel das Setzen von Variablen. Dazu<br />
bietet das Tool die Option »‐‐set«, die sich<br />
etwa durch die Angabe des Variablentyps<br />
<strong>mit</strong> »‐‐type« ergänzen lässt. Der folgende<br />
Code führt also erst das Stat-Kommando<br />
aus <strong>und</strong> weist dessen Ergebnis der Shell-<br />
Variablen »free« zu. Die zweite Zeile<br />
liest diese Variable aus <strong>und</strong> weist sie der<br />
Whenjobs-Variablen »free_space« vom<br />
Typ Integer zu, die später anderen Jobs<br />
zur Verfügung steht.<br />
92 Ausgabe 06-2012 Admin www.admin-magazin.de