Crontab

Was ist bzw. sind Crontab(s)?

Crontabs werden verwendet um sich wiederholende Ereignisse automatisch mehrfach auszuführen.
Ein Beispiel wäre hier ein Backupscript, dass jede Nacht um 01:00 Uhr ablaufen soll.

Um überhaupt erstmal ein Crontab anzulegen müssen wir den entsprechenden Befehl kennen:

# Diese Funktion steht im Normallfall JEDEM User zu
crontab -e

anschließend öffnet mittels des vims die Crontab-Datei. In dieser kannst du deine wiederholenden Planungen eintragen.

Der Aufbau der Datei sieht dabei wie folgt aus:

aufbau.txt

#  Spalte und Wert    Wert von bis      Mögliche Angaben
# ---------------------------------------------------------------
# 1. Spalte: Minuten    - 0-59 - *|1,2,3,4|1-3|*/5|1,2,3,56,57,58
# 2. Spalte: Stunden    - 0-23 - s. oben  
# 3. Spalte: Tage       - 1-31 - s. oben
# 4. Spalte: Monate  	- 1-12 - s. oben
# 5. Spalte: Wochentage - 0-7  - 0&7 = Sonntag
# 6. Spalte: Befehl     - z.B. einzelne Befehle / Scripte & ...

Wie man erkennen kann, setzt sich die Datei aus 6 Spalten zusammen, die jeweils eine eindeutige Bedeutung haben. Die Spalten müssen dabei von mindestens einem Leerzeichen getrennt werden.

Wie könnte ein Crontab nun aussehen?
beispiel1.txt

# Das backup.sh soll täglich um 01:00 Uhr ablaufen
0 1 * * * /pfad/zum/script/backup.sh

Das oben stehende Script hat also folgende Werte:
Minute: 0
Stunde: 1
Tag: *
Monat: *
Wochentag: *
Befehl: /pfad/zum/script/backup.sh

Das * steht dabei z.B. für jeden Tag, jeden Monat, egal welcher Wochentag.
Hätte das Script nur jeden Freitag ablaufen sollen so hätte die Spalte Wochentag anstatt des * den Wert 5

Selbstverständlich gibt, wie auch in anderen Bereichen, kleine Helfer, die man anstatt der Zahlen-Sternchen-Kombination eintragen kann (Aliase):
crontab-aliase.txt

# @reboot               - einmalig beim booten
# @yearly               - einmal im Jahr        - 0 0 1 1 *
# @monthly              - einmal im Monat       - 0 0 1 * *
# @weekly               - einmal in der Woche   - 0 0 * * 0
# @daily                - einmal am Tag         - 0 0 * * *
# @hourly               - einmal pro Stunde     - 0 * * * *

Desweiteren gibt es die Möglichkeit, innerhalb des Crontabs, spezielle Variablen zu definieren, wie z.B. die Ablaufshell, Mail-Empäfnger und co.:
crontab-variablen.txt

# legt fest, mit welcher Shell die Scripte ausgeführt werden sollen
SHELL=/bin/sh
# legt den Pfad fest, aus welchem Befehle ohne absoluten Pfad verwendet werden können
PATH=/home/julien/bin/:/home/julien/
# legt das entsprechende Homeverzeichnis fest
HOME=/home/julien/
# hinterlegt die E-Mail Adresse, welche benachrichtigt wird, sobald ein Cronjob abgelaufen ist
MAILTO="root"

Und nun noch ein keines Beispiel mit
beispiel2.txt

MAILTO="root"
SHELL="/bin/sh"
# 15. jeden Monats um 12:30 xmail.sh Ausgabe in Datei /var/log/xmail.log (SLES)
30 12 15 * * xmails.sh >> /var/log/xmail.sh
@weekly      /pfad/zum/script/backup.sh

Alle Scripte gibt es, wie gewohnt, zum DOWNLOAD

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.