Meine Werkzeuge
User menu

Cronjob

Aus Domain-Offensive - Wiki

Wechseln zu: Navigation, Suche

Cron (Ableitung von Chronos = Zeit): Im Hintergrund werden in regelmäßigen Abständen Befehle/Skripte aufgerufen und ausgeführt. Dies können Anwendungen wie bspw. das automatische Versenden von E-Mails, das Abholen von Log-Dateien, die Erstellung von Backups oder die Optimierung einer Datenbank sein. In Tabellen (sog. Crontabs) sind diese Befehle gespeichert und werden von dort aus ausgeführt.


Einrichtung von Cronjobs

Um auf einem Webspace-Paket ein Script als Cronjob auszuführen, muss dieses von außen über Ihr Internetprogramm erreichbar sein. Damit wird es möglich sowohl PHP als auch Perl und Python Scripts laufen zu lassen.

Cronjobs lassen sich in der Confixx-Adminoberfläche unter Einstellungen -> Crontab einrichten.

Cronjob.png

Zeitsteuerung von Cronjobs

Das Ausführungsinterval von Cronjobs lässt sich mit 5 Werten einstellen. Dabei kann man als größtes Interval einen jährlichen Cronjob definieren.

Der erste Wert gibt die Minute an, die folgenden die Stunde, den Tag, den Monat und den Wochentag.


Beispiele:

 */5 * * * * 

führt einen Cronjob alle 5 Minuten aus. Also immer dann, wenn sich die aktuelle Minute ohne Rest durch 5 teilen lässt.


 0 * * * * 

führt einen Cronjob immer dann aus, wenn die Minute 0 ist, also immer zur vollen Stunde.


 0 3 * * * 

führt einen Cronjob in der Nacht um 3:00 aus, z.B. um ein Backup zu machen oder die Datenbank aufzuräumen.


Es ist auch möglich Cronjobs nur an bestimmten Wochentagen auszuführen. Dabei ist ist Montag = 1 und Sonntag = 7


 0 3 * * 0 

führt einen Cronjob immer um 3:00 in der Nacht vom Samstag auf Sonntag durch.

Befehl für die Cronjobs

Cronjobs werden extern wie eine Webseite aufgerufen. Dazu benutzen Sie wget. Der Server führt dann eine Anfrage an Ihre Webseite durch wie ein Besucher.

Der einfachste Weg:

wget "http://www.ihredomain.xy/cron/script.php" -O -

Hierbei bekommen Sie nach der Ausführung des Cronjobs eine E-Mail mit der Rückgabe. Dies ist also auch eine gute Methode über Fehler informiert zu werden.

Ohne E-Mail Benachrichtigung:

wget "http://www.ihredomain.xy/cron/script.php" -O - &> /dev/null

Mittels "&>/dev/null" wird hier die komplette Ausgabe des Scripts verworfen.

Achtung! Aus Sicherheitsgründen ist es nicht möglich, Cronjobs mit HTTPS zu nutzen. Bitte tragen Sie hier die unverschlüsselte Adresse mit http:// ein.

Absicherung von Cronjobs

Es ist außerdem ratsam Scripts mit einem Kennwort zu sichern, damit niemand von außen die Cronjobs aufrufen kann. Der einfachste Weg dafür ist es, dem PHP-Script ein Kennwort zu geben.

Schreiben sie:

<?php
if (!isset($_GET['pass']))
	die();
if ($_GET['pass'] != "EINSEHRLANGESPASSWORT")
	die();
?>

über den Anfang Ihres Cronjobs und ändern sie das "EINSEHRLANGESPASSWORT" gegen ein Kennwort ihrer Wahl ab.

Hinweis: Sonderzeichen und Umlaute sind hier eine relativ schlechte Idee und verursachen öfter Probleme. Nehmen Sie besser ein langes Kennwort aus Buchstaben und Zahlen.

Sie können die korrekte Einrichtung des Passwortschutzes testen, indem sie die Datei manuell unter http://www.ihredomain.xy/cron/script.php?pass=EINSEHRLANGESPASSWORT aufrufen.

Um Ihr Script als Cronjob aufzurufen nutzen Sie folgenden Befehl:

wget "http://www.ihredomain.xy/cron/script.php?pass=EINSEHRLANGESPASSWORT" -O - &> /dev/null

Einrichtungsbeispiel für Cronjobs

Cronjobmitkennwort.png
Hier wurde ein Cronjob alle 5 Minuten eingestellt, welcher mit einem Kennwort gesichert ist.