Wie erstelle ich tägliche, wochentliche oder monatliche CRON jobs ?
Scripts die stündlich (01), täglich (04:02), wochentlich (04:22 am Sonntag) oder monatlich (04:42 am 1.) laufen müssen, könnten im entsprechende Verzeichnis abgelegt werden, nämlich
- /etc/cron.hourly
- /etc/cron.daily
- /etc/cron.weekly
- /etc/cron/monthly
Die Scripts werden in alphabetische Reihenfolge gestartet.
Wie sieht /etc/crontab aus ?
Die Hauptkonfigurationsdatei für 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 Zeilen sind Variablen, die zum Konfigurieren der Umgebung verwendet werden, in der die cron-Tasks ausgeführt werden. Der Wert der Variable SHELL teilt dem System mit, welche Shell-Umgebung zu verwenden ist (in diesem Beispiel ist dies die Bash-Shell). Die Variable PATH definiert den zum Ausführen der Befehle verwendeten Pfad. Die Ausgabe der cron-Tasks wird an den Benutzernamen gesendet, der mit Hilfe der Variable MAILTO definiert wurde. Wurde die Variable MAILTO als leere Zeichenfolge (MAILTO="") definiert, wird die E-Mail nicht gesendet. Die Variable HOME kann zum Festlegen des home-Verzeichnisses zum Ausführen von Befehlen oder Skripten verwendet werden.
Wie konfiguriere ich einen cron-Task ?
Jede Zeile der Datei /etc/crontab hat folgendes Format:
minute hour day month dayofweek command
- minute — jede beliebige ganze Zahl zwischen 0 und 59
- hour — jede beliebige ganze Zahl zwischen 0 und 23
- day — jede beliebige ganze Zahl zwischen 1 und 31 (wurde ein Monat angegeben, muss der Tag gültig sein)
- month — jede beliebige ganze Zahl zwischen 1 und 12 (oder der Kurzname des Monats wie Jan, Feb, usw.)
- dayofweek — jede beliebige ganze Zahl zwischen 0 und 7 0 oder 7 stehen für Sonntag (oder den Kurznamen der Woche wie So, Mo, usw.)
- command — der auszuführende Befehl. Der Befehl kann entweder ein Befehl wie zum Beispiel ls /proc >> /tmp/proc oder der Befehl zum Ausführen eines benutzerdefinierten, von Ihnen erstellten Skripts sein.
Für alle oben angegebenen Werte kann ein Sternchen (*) verwendet werden, um alle gültigen Werte anzugeben. Ein Sternchen für den Monatswert bedeutet zum Beispiel, dass der Befehl jeden Monat innerhalb der Einschränkungen der anderen Werte ausgeführt wird.
Ein Bindestrich (-) zwischen ganzen Zahlen gibt einen Bereich von ganzen Zahlen an. 1-4 steht zum Beispiel für die ganzen Zahlen 1, 2, 3 und 4.
Eine Liste von kommagetrennten Werten (,) gibt eine Liste an. 3, 4, 6, 8 gibt zum Beispiel diese vier ganzen Zahlen an.
Der Schrägstrich (/) kann zum Angeben von Schrittwerten verwendet werden. Der Wert einer ganzen Zahl kann in einem Bereich mit Hilfe von /<Ganze Zahl> übersprungen werden. 0-59/2 kann zum Beispiel zum Definieren jeder weiteren Minute im Feld minute (Minute) verwendet werden. Schrittwerte können auch mit einem Sternchen verwendet werden. Der Wert */3 kann zum Beispiel im Feld month (Monat) verwendet werden, um jeden dritten Monat zu überspringen.
Alle Zeile, die mit einem Nummernzeichen (#) beginnen, sind Kommentare. Sie werden nicht verarbeitet.
Wie erstelle ich meine eigene Crontab ?
- crontab -e
Falls Sie nicht in /etc/crontab.deny eingetragen sind, können Sie mit crontab -e Ihre eigene crontab editieren. Ein Verzeichnis mit Ihre Userid als Name wird in /var/spool/cron angelegt.