Regelmäßige Jobs unter Linux ausführen

0
0

Werbung:

Wer einen eigenen Server betreibt, oder betreiben will, regelmäßige Backups oder Aufgaben automatisch erledigen lassen will, sollte sich einmal mit Cronjobs auseinandersetzen.

Was sind „Cronjobs“?

Cronjobs sind kleine Aufträge die von einem (typischerweise rund um die Uhr laufenden System) regelmäßig ausgeführt werden. Daher finden diese gerne auf (Web-)servern, Fritz!Boxen oder kleinen Computern wie dem Raspberry Pi, Verwendung.

Wie funktioniert das mit den Cronjobs?

Auf dem Rechner läuft ein Dienst (genauer: ein Daemon), der Aufgaben aus einer zuvor angelegten Liste ausführt, wenn die Startbedinungen zutreffen. Diese Startbedingung wird in Form einer Zeitangabe definiert. Der Name Cronjob leitet sich vom griechischen Wort „chronos“ ab, was Zeit bedeutet. Diese Zeitangaben, und was zu diesem Zeitpunkt zu tun ist, wird in einer Datei, der Crontab (tab von griechisch „tabula“, die Tabelle), gespeichert. Diese Crontab enthält die Angaben natürlich in einer bestimmten Syntax, die zwingend eingehalten werden muss, sonst kann es mitunter zu falschen Ergebnissen führen. Besonders wichtig für Linuxneueinsteiger: der Dienst liest diese Tabelle nicht ständig neu ein, das würde bei Servern mit mehreren Benutzern schnell eine enorm große Systemausnutzung erzeugen, die gar nicht notwendig ist. Daher wird diese Tabelle im Speicher gehalten. Wenn man diese Tabelle also geändert hat muss man den Dienst neu starten. Geschickter ist es, die Tabelle mit einem speziellen Aufruf zu ändern, der dafür sorgt, dass beim Speichern und Schließen der Dienst automatisch informiert wird, dass es eine Änderung gibt. Da in der Regel Administratorrechte für eine solche Änderung notwendig sind muss man entweder Administrator sein, oder den Befehl mittels „sudo“ starten. Ein korrekter Aufruf wäre also:

sudo crontab -e

Werbung:

Damit kann man jetzt eigene Cronjobs anlegen und bestehende bearbeiten bzw. verwalten.

Weitere Möglichkeiten zum Aufruf von Crontab wären:
„-l“  von „list“ um alle Jobs aufzulisten
„-r“ von „remove“ um die Crontab-Datei komplett zu entfernen.

Wie sieht die Syntax aus?

Zunächst einmal wird die Zeitangabe der Ausführung angegeben, danach der auszuführende Befehl. Die einzelnen Zeitangaben werden durch Tabulatoren, oder Leerzeichen getrennt. Bei der Angabe der Zeitangabe kann sowohl ein Zahlenwert, als auch ein “ * „angegeben werden. Zunächst gibt man die Minuten, danach Stunden, Tage, Monate oder als Besonderheit die Wochentage an. Kommentare zur Erläuterung können mit einem „#“ Zeichen eingeleitet werden, jede Zeile enthält einen Auftrag. Für die Wochentage gilt als Besonderheit, dass theoretisch sowohl 0 als auch 7 zulässig sind. Einige wenige Systeme behandeln aber die 7 nicht korrekt, so dass die Verwendung von 0 empfohlen wird. Die 7 ist also das, was auch gerne mal als „obsolete“ bezeichnet wird: In der Regel gültig, aber zur Löschung vorgesehen. Angaben für Minuten können von 0 bis 59 gehen, Stunden von 0 bis 23, Tage von 1 bis 31 (Achtung: nicht jeder Monat hat 31 Tage!) und die Wochentage von 0 bis 7 (oben genanntes beachten!).

Weiter können Kommata benutzt werden um mehrere Angaben zu machen, Bindestriche für Zeiträume und „/“ (Backslash) für Perioden.

Zur Erleichterung gibt es weiter noch sogenannte „Aliase“. Das sind Kurzschreibweisen für häufige Anwendungsfälle:


@reboot
# Hierfür gibt es keine alternative Schreibweise

@hourly
#stündlich, entspr. dem Aufruf 0 * * * *

@daily
#täglich, entspr. dem Aufruf     0 0 * * *

@weekly
#wöchentlich, entspr. dem Aufruf 0 0 * * 0

@monthly
#monatlich, entspr. dem Aufruf   0 0 1 * *

@yearly
#jährlich, entspr. dem Aufruf    0 0 1 1 *

 

Sehr schön… und gibt es da ein Beispiel zum Verständnis?

Beispiele:

Beispiel 1 (Uhrzeit mit Zeitserver aktualisieren):

# ntpdate
0 0 * * * /usr/sbin/ntpdate ntps1-0.cs.tu-berlin.de

(Jeden Tag um Mitternacht)

Beispiel 2 (Uhrzeit mit Zeitserver aktualisieren):

# ntpdate
*/15 4-16 * * 0,6 /usr/sbin/ntpdate ntps1-0.cs.tu-berlin.de

(alle 15 Minuten zwischen 4 und 16 Uhr aber nur Samstags und Sonntags)

Beispiel 3 (Uhrzeit mit Zeitserver aktualisieren):

# ntpdate
@yearly 
/usr/sbin/ntpdate ntps1-0.cs.tu-berlin.de

(Jedes Jahr zum Jahreswechsel)

0
0

Ein Gedanke zu „Regelmäßige Jobs unter Linux ausführen“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.