Für diverse automatisierte Aktionen nutze ich Crontab und auch ab und an die Geplanten Tasks unter Windows. Was mich an der ganzen Sache allerdings recht störend finde ist, dass die Anlage von neuen Jobs und die zentrale Protokollierung und Auswertung der Ergebnisse nicht unbedingt ohne weiteres möglich. Hierzu war ich Ewigkeiten nach einer schönen Webbasierten Lösung am suchen, die man gut per Browser administrieren kann. Ich bin dann schließlich über diesen Drupal Artikel (Drop that cron; use Hudson instead) bei Hudson gelandet.
Es gibt mir wunderbare Status-Listen aus, wo man direkt erkennen kann, ob irgendwelche Jobs in einen Fehler gelaufen sind. Man ist so in der Lage direkt einzugreifen und merkt den Fehler nicht erst wenn es zu spät. Anbindungen an diverse Benachrichtigungsdienste E-Mail, RSS und co. sind übrigens auch enthalten.
Ist man nur auf der Suche nach einer einfachen Crontab-Verwaltung z.B. für sein CMS, Drupal oder sonstiges, so kann man die freien Dienste von www.cronjob.de und cron-job.org.
Hudson
Hudson ist eigentlich für die automatisierte Erstellung von Softwarebuilds und der deren anschließenden Tests ausgelegt. Es gibt wirklich unzählige Plugins (z.B. Anlegen von Vmware Images), die keine Wünsche offen lassen. Hudson ist rein in JAVA programmiert und bringt einen integrierten Webserver mit, so das neben einem installiertem JAVA nichts weiter benötigt wird.
Abgelegt werden die Konfiguration und Rückgabewerte von Jobs Dateibasierend (in XML) mit einem Ordner pro Job und lassen sich ohne Probleme kopieren, verschieben und gegebenfalls mit eignen Tools auswerten.
Jobs anlegen
Genau wie bei Cron müssen Jobs angelegt werden, die dann unter anderem Zeitgesteuert über die Crontabsyntax zu bestimmten Zeiten ausgeführt werden. Auch andere Trigger sind möglich, ich nutze diese aber bisher nicht. Die meisten meiner Jobs rufen PHP-Skripte und prüfen deren Ausgabe auf Fehlern.
Dazu legt man einfach einen neu Job an, der ein Shell-Skript ausführt und über wget eine URL aufruft. Der Job bekommt dann allerdings nur einen Fehlerstatus, wenn der Server oder das PHP-Skript nicht existieren (Errorcode von wget). Zur besseren Steuerung kann man die Ausgabe von wget und den Seiteninhalt der URL in eine Variable umleiten. Diese Variable kann dann weiter ausgewertet werden. So wird die Variable nach bestimmt Wörter z.B. error durchsucht und bei einem Treffer, dann ein Errorcode ausgeben, Hudson weiß somit, dass ein Fehler aufgetreten ist und passt den Status des Jobs an.
url="http://www.espendiller.net/tinyrss/update_feeds.php" resp=`wget -T 1 -O - "$url" 2>&1` if grep -i -l -E "(error|failed|warning)" <<<$resp then echo "error" exit 1 else echo "no error" exit 0 fi

