Ein Cron-Job ist einfach nur eine Textzeile, die immer 6 Spalten (+ optionaler Argumente/Parameter) und den gleichen Aufbau hat: Die ersten fünf Spalten dienen der Zeitsteuerung und eine Spalte dient dem Aufruf eines Programms oder Skriptes, das ausgeführt werden soll, eventuell gefolgt von Argumenten. Alle Angaben werden durch Leerzeichen oder Tabulatoren getrennt.
Minute Stunde Jahr Monat Wochentag Skript-Pfad [Argumente]
Wichtige Cron-Jobs (z.B. die tägliche Aktualisierung des Wechselkurses sind bereits in PrestaShop vorkonfiguriert und können per Mausklicke gestartet werden, etwa der diesbezügliche in Lokalisierung -> Währungen:
http://MeinShop.de/admin-dev/cron_currency_rates.php?secure_key=c2923c9d8c87e05e2ca4fb1e0be808d3
Syntax:
Platzhalter | mögliche Werte | Wildcard |
Minute | 0...59 | * für jede Minute |
Stunde | 0...23 | * für jede Stunde |
Tag | 1...31 | * für jeden Tag |
Monat | 1...12 | * für jeden Monat oder January, February, March, etc. |
Wochentag | 0...7 | * für jeden Wochentag ( 0 und 7 adressieren den Sonntag ) oder Monday, Tuesday, Wednesday, etc. |
Kommando | der auszuführende Befehl gefolgt von optionalen Argumenten |
Die Verwendung des Symbols * zeigt an, dass der jeweilige Wert beliebig ist. Wochentage und Kalendertage schließen sich nicht gegenseitig aus, sondern werden getrennt betrachtet. Trifft also eines der beiden Kriterien zu, wird das Skript ausgeführt. Die Namen der Wochen- und Monatstage sind unabhängig von Groß- und Kleinschreibung und die ersten 3 Zeichen genügen.
Für Bereichsangaben sind folgende Separatoren erlaubt:
- Kommata für mehrere Zeitangaben
- Bindestrich für einen Zeitraum
- Backslash für eine Periode
Das bedeutet, man kann also
- Bereiche angeben, z. B. 1-4
- die einzelnen Werte durch Komma getrennt aufzählen, z. B. 1,2,3,4
- Schrittwerte nach dem / -Zeichen angeben.
Darüber hinaus sind folgende Alias-Namen erlaubt:
@reboot | Wird nach dem Booten ausgeführt | |
@hourly | Einmal in der Stunde | ~ 0 * * * * |
@daily | Einmal am Tag | ~ 0 0 * * * |
@weekly | Einmal in der Woche | ~ 0 0 * * 0 |
@monthly | Einmal im Monat | ~ 0 0 1 * * |
@yearly | Einmal im Jahr | ~ 0 0 1 1 * |
Zum Verständnis ein paar Beispiele:
# jeden Tag um 0:30 30 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
# am ersten jeden Monats um 13:25 25 13 1 * * $HOME/bin/monthly.job
# Sonntags um 3:30 30 3 * * sun $HOME/backup.sh full
# jeden Tag 23 Minuten nach jeder geraden Stunde (0:23, 2:23, ...). 0-23 gibt den Bereich an und /2 die Schrittweite, also von 0-23 Uhr, alle 2 Stunden. 23 0-23/2 * * * $HOME/status.sh
# Jeden Wochentag um zehn Minuten 13, 14 und 15 Uhr: 10 13-15 * * 1-5 /pfad/zum/programm
# Jedes Jahr zu Silvester: 0 0 31 12 * /usr/bin/mail.sh
Wichtig: Es sollten immer absolute Pfade für das Adressieren des Programms/Skripts angegeben werden.
Man kann im Cron-Job festlegen, mit welcher Shell die Skripte ausgeführt werden sollen, und wem eine E-Mail mit dem Ergebnis zugesandt werden soll:
SHELL=/bin/bash MAILTO=admin@MeinShop.de
Wer dagegen keine E-Mail-Banchrichtigen erhalten möchte, hängt einfach folgendes an die Zeile an:
>/dev/null 2>&1