Crontab
von KP97- SNIPPET_TEXT:
-
- Aufbau der Crontab
- Wenn man ein Script jeden Tag ausführen will, kopiert man es einfach in den Ordner /etc/cron.daily, für einmal pro Woche in /etc/cron.weekly und einmal pro Monat in /etc/cron.monthly und das war's bereits.
- Wem das nicht genügt, hat zwei verschiedene Möglichkeiten, Cronjobs einzutragen. Einerseits in die Datei /etc/crontab, die aber nur vom User root geändert werden kann, oder mit dem Befehl 'crontab -e'. Zuerst die Möglichkeit über die Datei /etc/crontab.
- Code:
- Minute | Stunde | Tag des Monats | Monat | Tag der Woche | User | Befehl
- Die möglichen Werte aufgelistet:
- Minute: 0-59
- Stunde: 0-23
- Tag des Monats: 1-31
- Monat: 1-12
- Tag der Woche: Nützlich, wenn z.B. immer Dienstags ein Script gestartet werden soll. Möglich ist 0-7, wobei 0 und 7 jeweils der Sonntag ist.
- User: Der Benutzername unter dem das Script ausgeführt werden soll. Bspw root
- Befehl: Konsolen-Befehl oder Scriptname der ausgeführt wird.
- Code:
- 0 15 * * * root /root/scripts/backup.sh
- Das Script /root/scripts/backup.sh würde nun jeden Tag um 15 Uhr ausgeführt.
- Wie man hier sieht, werden die Werte die egal sind, mit einem Stern (*) gekennzeichnet. In diesem Fall ist es egal was für ein Tag ist, in welchem Monat wir uns befinden und auch, ob wir Dienstag oder Donnerstag haben.
- Über den Befehl crontab -e funktioniert das ganz ähnlich, es fällt nur die Spalte User weg, da das Script unter dem Benutzer laufen wird, der den Cronjob eingerichtet hat.
- Beispiel:
- Code:
- 0 15 * * * /root/scripts/backup.sh
- Nun hat man aber noch einige weitere Möglichkeiten die Werte anzugeben:
- Listen:
- Mit Komma getrennte Werte (ohne Abstand dazwischen) Bspw: 8,12 um ein Script um 8 und 12 Uhr auszuführen.
- Zahlenfolgen:
- Mit - getrennte Werte Bspw. 8-12 um das Script um 8,9,10,11 und 12 Uhr auszuführen.
- Stufen: */Stufe, Wird genutzt um z.B.: "alle fünf Minuten" oder "jeden 2. Tag" zu erstellen. Bspw: */2 um das Script alle zwei Stunden auszuführen.
- Besondere Aufrufe
- Für besondere Ereignisse kann man anstatt der 5 Zeitdaten eines der Folgenden einsetzen:
- @reboot Ausführen beim Systemstart
- @yearly Einmal pro Jahr
- @monthly Einmal pro Monat
- @weekly Einmal pro Woche
- @daily Einmal am Tag
- @hourly Einmal pro Stunde
- Beispiel:
- Code:
- @reboot root /root/scripts/backup.sh
- Führt das Script beim Systemstart unter dem User root aus.
- Output und Fehlermeldungen
- Schreibt man in die /etc/crontab eine Zeile wie
- Code:
- MAILTO=root
- wird die gesamte Ausgabe der Scripts per Mail an den User root gesendet.
- Wenn man dies bei keinem seiner Scripte will, löscht man einfach die Zeile mit dem MAILTO= aus /etc/crontab.
- Will man nur bei bestimmten Scripts keine Meldung, fügt man
- > /dev/null an den Aufruf an. Damit werden die Meldungen, die vom Script gesendet werden, ins Nichts geleitet.
- Beispiel:
- Code:
- 0 15 * * * root /root/scripts/backup.sh > /dev/null
- Nun erhält man aber noch allfällige Fehlermeldungen per Mail. Will man auch diese nicht, muss noch 2>&1 angefügt werden, damit werden Fehler dorthin geleitet wo auch die normale Ausgabe hinkommt, und das ist wieder ins Nichts...
- Beispiel:
- Code:
- 0 15 * * * root /root/scripts/backup.sh > /dev/null 2>&1
- Einige Beispiele um das Ganze noch etwas verständlicher zu machen:
- Code:
- * * * * * root /root/scripts/backup.sh
- Script wird jede Minute ausgeführt.
- Code:
- */1 * * * * root /root/scripts/backup.sh
- Bewirkt das gleiche wie der Aufruf oben.
- Code:
- 10 * * * * root /root/scripts/backup.sh
- Script wird jede Stunde um 10 nach ausgeführt, 14:10, 15:10 etc.
- Code:
- 0 10,12 * * * root /root/scripts/backup.sh
- Script wird jeden Tag um 10.00 und 12.00 Uhr ausgeführt.
- Code:
- 0 0 2-4 * * root /root/scripts/backup.sh
- Script wird am 2., 3. und 4. jeden Monats um 0.00 Uhr ausgeführt.
- Code:
- 40,50 13 */2 4-8 * root /root/scripts/backup.sh > /dev/null 2>&1
- Script wird vom April bis August jeden zweiten Tag um 13.40 und 13.50 ausgeführt, wobei die Ausgabe wie auch die Fehlermeldungen nicht verschickt werden.
- Code:
- */2 * * * * root /root/scripts/backup.sh > /dev/null
- Script wird alle 2 Minuten aufgerufen wobei der Output des Scripts nicht verschickt wird.
- Code:
- 0 10 * * 1 root /root/scripts/backup.sh
- Script wird jeden Montag um 10.00 Uhr ausgeführt.
Quellcode
Hier kannst du den Code kopieren und ihn in deinen bevorzugten Editor einfügen. PASTEBIN_DOWNLOAD_SNIPPET_EXPLAIN