Cron Job (Scheduled Task) in Plesk einrichten
Um geplante serverseitige Aufgaben regelmäßig und zu einem bestimmten Zeitpunkt ausführen zu können, Muss ein so genannter Cron Job eingerichtet werden.
Wie richtet man einen solchen Cron Job in der Websever-Distribution Plesk ein?
Um einen Cron Job in Plesk zu erzeugen, muss man im Bereich der geplanten Aufgaben bzw. Scheduled Tasks oder den so genannten Crontab-Aufgaben einen Benutzer auswählen und diesem eine neue Aufgabe hinzufügen.
Anschließend kann man in einem Dialog den Zeitpunkt festlegen, wann die Aufgabe durchgeführt werden soll. Hierfür stehen die Felder Minute, Stunde, Tag des Monats, Monat und Tag der Woche zur Verfügung. In diese Felder müssen die Werte im UNIX-Crontab-Format (z. B. 1, 5-7, */4, *) eingetragen werden.
Beispiele:
Der Befehl soll um 18:30 Uhr ausgeführt werden
30 18
oder am 5. Januar um 9:15 Uhr
15 9 5 1
oder ein Befehl soll jeden Tag um 10:45 Uhr ausgeführt werden
45 10 * * *
hierbei steht der '*' für jeden Wert eines Feldes (jeden Tag, jeder Monat,...).
Möchte man einen Befehl stündlich ausühren, dann gibt man folgende Werte an
0 * * * *
oder alle zwei Stunden
0 */2 * * *
dabei steht '*/2' für jeden zweiten Wert eines Feldes, dass geht analog auch für jeden dritten Wert, also alle 3 Stunden '*/3'.
Möchte man, dass ein Befel alle 5 Minuten ausgeführt wird, dann gibt man diese Werte ein.
*/5 * * * *
Soll ein Befehl an bestimmten Tagen ausgeführt werden, ohne das es dabei eine Regelmäßigkeit gibt, dann werden die jeweiligen Werte mit einem Komma getrennt.
0 8 3,9,20 * *
In die Befehlszeile trägt man den auszuführenden Befehl ein, der zum definierten Zeitpunkt ausgeführt werden soll. Wenn zum Beispiel ein php-Script ausgeführt werden soll, kann man es auf unterschiedliche Weise aufrufen:
es kann das Programm WGET verwendet werden, mit dem man direkt aus einem Terminal Dateien von FTP- oder HTTP-Servern herunterladen kann
/usr/bin/wget http://www.example.com/cron.php
Um den Server nicht mit einer stetig steigenden Menge an Script-Dateien zu füllen, kann man diese an den Nulldevice schicken, in dem man hinter die URL noch '>/dev/null' einträgt. Außerdem kann man '2>&1' einfügen. Diese Umlenkung legt STDERR und STDOUT zusammen, so kann man beide Ausgaben komplett pipen oder ebenfalls an den Nulldevice schicken.WGET verfügt noch über diverse Optionen, wie zum Beispiel '-q', um zu verhinden, dass WGET Informationen auf der Konsole ausgibt oder '-t 1', mit der die Anzahl der Versuche festgelegt wird, die WGET unternehmen soll, um eine Datei herunterzuladen.
/usr/bin/wget -q -t 1 http://domain.de/index.php?task=cron >/dev/null 2>&1
Wenn lynx installiert ist, kann auch dieser verwendet werden./usr/bin/lynx --dump http://www.inter.net/to/page.php >/dev/null
Hier wird lynx mit der Option -dump versehen, damit die Webseite nicht im Browser dargestellt, sondern die Seite als Text ausgegeben wird.Natürlich können auch andere Programme verwendet und andere Scripte bzw. Befehle ausgeführt werden.
Da es bei mir ein paar Schwierigkeiten bei der Einrichtung eines Cron Jobs in Plesk gab, habe ich diesen direkt in /etc/crontab geschrieben. Hier kann man der Anweisung auch einen Benutzer und damit bestimmte Rechte zuweisen, unter denen der Befehl ausgeführt wird. Wenn man einen Cron Job direkt einträgt oder über die Konsole eingibt und damit eintragen lässt, muss man die Zeitangaben mit anfügen. Folgendes schrieb ich somit in /etc/crontab:
*/5 * * * * root wget -q -O - "http://domain.de/befehl.php?task=cron" >/dev/null 2>&1
Die Option "-O -" sorgt dafür, dass das Dokument in STDOUT geschrieben wird. Damit erscheint diese auch nicht mehr im root-Verzeichnis. Diese Option macht "-t 1" unnötig, da automatisch die Anzahl der Versuche auf 1 gesetzt wird.