Boehrsi.de - Blog

Cronjobs für Shell und PHP Scripte

Erstellt am event Uhr von account_circle Boehrsi in label Archiv

Geplante Aufgaben sind sehr praktisch und auf Servern ein muss, denn was würde man ohne automatische Backups der Datenbank tun. Dies gilt für extrem viele weitere Dinge und darunter fällt zum Beispiel auch die Möglichkeit bestimmte Scripte der Shell oder eures Web-Servers (z.B. PHP Scripte) geplant auszuführen. Vor kurzem schrieb ich über ein Shell Script welches euch ermöglicht zu prüfen ob bestimmte Programme laufen und bei einem negativen Ergebnis wird dieses dann gestartet. Zum Beispiel gut wenn der Server in der Nacht aus irgendeinem Grund neu startete und ihr es nicht gemerkt habt.

crontab -e #Cronjob Bearbeitung öffnen

Im unteren Teil der News gibt es deswegen hier eine kleine Einführung in Linux Cronjobs und Beispiele für das genannte Shell Script und für PHP Scripte, denn bei letzteren muss man ein paar Sachen beachten damit alles funktioniert.

Info: Alle Tipps die ich geben sind auf eigene Gefahr zu nutzen und das folgende hat keinen Anspruch auf totale Vollständigkeit, außerdem kann es sein das ich mich an manchen Stellen vielleicht verschrieben habe. Ich habe das ganze aber relativ oft kontrolliert und hoffe das keine Fehler drin sind. Sollte jemand welche finde bitte ich um einen Kommentar, damit ich den Fehler beheben kann. 1. Cronjobs anzeigen und die Bearbeitung öffnen

cronjob -l 
cronjob -u test -l 
cronjob -e 
cronjob -u test -e 
crontab -r

Der erste Befehl zeigt euch die allgemeinen Cronjobs (des aktuellen Nutzers) an, der zweite für den Benutzer “test”. Der dritte und vierte Befehl ist analog zu den ersten beiden, nur das hier die Möglichkeit gegeben wird die Cronjob Liste zu bearbeiten. Beim bearbeiten wird der Standard Editor eures System verwendet, bei mir ist dies vi (Auflistung der Befehle open_in_new). Der 5. Befehlt löscht die Cronjob Tabelle des aktuellen Nutzers. 2. Erklärung des Cronjob Syntax

MinutenStundenTage des MonatsMonatTag der WocheWann auführen?
101***Jeden Tag um 01:10 Uhr
021**An jedem 1. des Monats mu 02:00 Uhr
*/30****Alle 30 Minuten
00**1-5Montags bis Freitags um 00:00 Uhr
00*1,6,12*Am 1. Januar, Juni und Dezember um 00:00 Uhr
*****Jede Minute
Wie man sieht ist die Einstellung relativ einfach, man gibt entweder direkt zahlen ein oder trennt sie durch Kommas oder Striche. Dabei ergeben Kommas eine Aufzählung um mehrere Termine zu setzen und Striche sind als "von-bis" Befehle zu betrachten. Das Teilungszeichen agiert auch als solches, wie man sieht. Sterne gelten als Wildcards und werden nicht beachtet. Die einzelnen Zeitmarken lassen sich sinnvoll kombinieren wie man der Tabelle entnehmen kann. Weiterhin gibt es bestimmte Schlüsselwörter die man anstatt einiger Kombinationen einsetzen kann, z.B. @daily für täglich um 00:00 Uhr. Die Liste kann z.B. auf Ubuntuusers.de open_in_new eingesehen werden. 3. Allgemeine Tipps
> /dev/null 2>&1

Mit diesem Befehl am Ende werden eventuelle Ausgaben verworfen, bzw. direkt wieder gelöscht. 4. Tipps zur Ausführung von PHP Scripten

0 2 * * * wget --spider http://domain.de/pfad/script.php > /dev/null 2>&1

Mit diesem Befehl können PHP Scripte per Cronjob gestartet werden, Ausgaben werden dabei nicht gespeichert. Dieses Script würde dabei täglich um 02:00 Uhr Nachts starten. 5. Ausführung eines Shell Scripts

0 2 * * * /pfad/script >/dev/null 2>&1

Mit diesem Befehl lässt sich immer um 02:00 Uhr Nachts ein Script ohne Ausgabe ausführen. 6. Weitere Infos Für weitere Infos verweise ich ein weiteres Mal auf Ubuntuusers.de open_in_new und wenn jemand noch Fragen hat stehe ich natürlich gerne zur Verfügung und werde das How To bei Bedarf anpassen.

Related Links
Kommentare  
Kommentar erstellen
Mit dem Abschicken des Kommentars erklären sie sich mit der in der Datenschutzerklärung dargelegten Datenerhebung für Kommentare einverstanden. Spam, unangebrachte Werbung und andere unerwünschte Inhalte werden entfernt. Das Abonnieren via E-Mail ist nur für E-Mail Adressen erlaubt die Sie rechtmäßig administrieren. Widerrechtliche Abonnements werden entfernt.