Suche


drucken PDF
Wie kann ich Skripte automatisch (per crond) auf einem dedizierten Server ausführen lassen?


Unter Linux können Sie Aufgaben definieren, die automatisch zu einem bestimmten Zeitpunkt oder für einen bestimmten Zeitraum ausgeführt werden. Red Hat Linux ist zum Beispiel so vorkonfiguriert, daß es verschiedene Systemaufgaben übernehmen kann um Ihren Rechner auf dem neuesten Stand zu halten. Beispielsweise werden die Datenbanken täglich aktualisiert. Ein Systemadministrator kann diese automatisierten Aufgaben nutzen um regelmässig Sicherungen zu erstellen, das System zu überwachen, eigene Skripte auszuführen...


Konfiguration eines Cronjobs:

Die Hauptkonfigurationsdatei von cron, /etc/crontab, enthält folgende Zeilen:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4* * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly


Die ersten vier sind Variablen die dazu dienen, das Umfeld in dem die Cronjobs ausgeführt werden zu konfigurieren. Der Wert der Variable SHELL weist das System an welche shell es verwenden soll (in diesem Beispiel die bash shell), und die Variable PATH definiert den für die Ausführung von Befehlen verwendeten Pfad. Das Ergebnis der Cronjobs wird per E-Mail an den in der Variable MAILTO angegebenen Benutzernamen gesendet. Wenn die Variable MAILTO leer ist (MAILTO="") wird keine E-Mail versendet. Die Variable HOME kann dazu verwendet werden, das Verzeichnis für die Ausführung von Befehlen oder Skripts zu parametrieren.

Jede der Zeilen der Datei /etc/crontab hat das Format:

minute hour day month dayofweek command
Minute Stunde Tag Monat Wochentag Befehl

* minute - Eine ganze Zahl von 0 bis 59
* hour - Eine ganze Zahl von 0 bis 23
* day - Eine ganze Zahl von 1 bis 31 (Wenn der Monat genannt wird muss der Tag gültig sein)
* month - Eine ganze Zahl von 1 bis 12 (Oder Abkürzung des Monatsnamens)
* dayofweek - Eine ganze Zahl von 0 bis 7, wobei 0 oder 7 für Sonntag stehen (Oder Abkürzung des Wochentags)
* command - Der auszuführende Befehl. Der Befehl kann ein Befehl wie ls /proc >> /tmp/proc sein, oder der Befehl zur Ausführung eines Ihrer Skripte.

Für die Oben genannten Werte können Sie ein Sternchen (*, Asterisk) verwenden um alle gültigen Werte zu symbolisieren. Ein Sternchen für den Wert des Monats bedeutet also zum Bespiel, daß der Befehl jeden Monat ausgeführt wird (unter Beachtung der Beschränkungen der anderen Werte).

Ein Bindestrich (-) zwischen zwei ganzzahligen Werten bezeichnet den Bereich zwischen den Werten, also entspricht zum Beispiel 1-4 den ganzen Zahlen 1, 2, 3 und 4.

Eine durch Kommata (,) unterteilte Liste entspricht einer einfachen Auflistung der Werte; zum Beispiel entspricht 3, 4, 6, 8 den genannten vier ganzzahligen Werten.

Der Schrägstrich (/, Slash) kann verwendet werden um gestaffelte Werte anzugeben. Um ganzzahlige Werte in einem Bereich zu überspringen hängen Sie diesem / an. Zum Beispiel können Sie mit 0-59/2 jede zweite Minute im Bereich der Minuten auswählen. Diese gestaffelten Werte können auch mit einem Sternchen kombiniert werden; so können Sie zum Beispiel mit */3 im Feld Monate jeden dritten Monat auswählen.

Zeilen die mit einer Raute (#) beginnen sind Kommentare und werden nicht verarbeitet.


Wie kann ich ein Skript automatisch (per crond) auf einem dedizierten Server ausführen?

Sie müssen zuerst überprüfen ob das Skript im Shellmodus funktioniert, das heißt ob es von der Kommandozeile aus ausgeführt werden kann. Dazu müssen Sie in der ersten Zeile einfügen: #!/usr/local/bin/php wenn es sich um ein php Skript handelt, #!/usr/bin/perl bei einem Perl Skript oder #!/bin/bash bei einem Shell Skript. Danach wenden Sie den Befehl "chmod 700 script.cgi" auf das Skript an. Wenn Sie Zugang per SSH/Telnet haben, können Sie dessen Ausführung mit "./script.cgi" testen.

Danach genügt es in der Datei /etc/crontab den Pfad zum Skript und die Zeiten für dessen Ausführung einzutragen.

Beispiel: Einrichtung eines automatischen Skripts zur Verwendung der MRTG Graphen:

*/5 * * * * root /usr/local/mrtg-2/bin/mrtg /home/ovh/www/mrtg/mrtg-sys/mrtg-sys/mrtg_nsxxxx.ovh.net.cfg >/dev/null 2>/dev/null

/home/ovh/www/mrtg/mrtg-sys/mrtg-sys/mrtg_nsxxxx.ovh.net.cfg Entspricht dem Pfad zum ausführenden Skript.
*/5 * * * * Entspricht den Ausführungszeiten.
In diesem Beispiel wird das Skript alle 5 Minuten gestartet.