Wie führe ich automatisch Aufgaben auf meinem vServer aus?

In diesem Artikel erfährst du, wie du wiederkehrende Tasks, z.B. Shell-Scripte per Cronjob ausführen kannst

Was ist ein Cronjob?
Wenn du auf deinem Linux Server regelmäßig Aufgaben ausführen möchtest, beispielsweise Updates, Backups oder Prüf-Scripte kannst du hierfür Cron verwenden. Ein Cronjob kann zu einer bestimmten Zeit oder in bestimmten Intervallen Aufgaben in Form von Scripten, Programmen oder einfach nur Befehlen ausführen.

Was ist ein Crontab?
Die Cronjobs die regelmäßig ausgeführt werden sollen werden in Tabellen, sog. Crontabs, aufgelistet. Die Tabelle beinhaltet in der Reihenfolge die Spalten: Minute, Stunde, Tag des Monats, Monat, Wochentag und das Programm das ausgeführt werden soll. Hierzu erfährst du später mehr.

Wo erstelle ich einen Cronjob?
Grundsätzlich kannst du Cronjobs als einzelne Dateien in den Ordnern /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly und /etc/cron.monthly oder in der vorhandenen Datei /etc/crontab anlegen und regelmäßig ausführen lassen. Der Einfachheit halber konzentrieren wir uns in diesem Artikel auf die Erstellung des Cronjobs in der Datei /etc/crontab

Wie erstelle ich einen Cronjob
Um einen neuen Cronjob zu installieren öffne zunächst die Crontab Datei mit folgendem Befehl:
sudo crontab -e

Beim ersten Ausführen dieses Befehl wirst du möglicherweise nach deinem bevorzugten Text-Editor gefragt. Wir verwenden hier den Editor „nano“. Wähle einen beliebigen Editor mit den vorgegebenen Zahlen aus und bestätige mit Enter.

Nun siehst du eine Datei, in der bei vielen Linux Distributionen eine kurze Erklärung zu Cron und der Syntax steht. Möglicherweise findest du auch bereits vorhandene Cronjobs.

Beginnen wir mit unserem ersten Cronjob:
Wie bereits oben erwähnt geben die ersten 5 Spalten die Zeit an zu der ein Job ausgeführt werden soll. Das Zeichen * steht hierbei für jede(n) Minute, Stunde, Tag, Monat, Wochentag. Wollen wir also z.B. dass der Cronjob jede Minute die aktuelle Zeit in eine Datei schreibt, sieht dieser Job so aus:

* * * * * echo $(date) > /root/Uhrzeit.txt

Der Inhalt der Datei Uhrzeit.txt sollte sich also nun immer zu vollen Minute auf die aktuelle Zeit ändern.
Soweit so gut. Nun möchtest du aber vielleicht, dass dieser Job nicht jede Minute läuft, sondern einmal pro Stunde, genau zur fünfzehnten Minute. Die letzten 4 Stellen der Zeitangabe bleiben in dem Fall gleich, wir lesen sie zum besseren Verständnis von hinten nach vorne. Der Job läuft jede(n) Wochentag, Monat, Tag, Stunde ABER zur fünfzehnten Minute. Das heißt in dem Fall zum Beispiel um: 09:15, 10:15, usw.:

15 * * * * echo $(date) > /root/Uhrzeit.txt

Wenn du genug Zeit hast kannst du nun beobachten, wie der Inhalt der Datei Uhrzeit.txt sich immer um viertel nach auf die aktuelle Uhrzeit ändert.

Möchtest du nun, dass eine Aufgabe jeden Tag zu einer bestimmten Uhrzeit ausgeführt wird, z.B. ein tägliches Backup kommt die nächste Spalte ins Spiel.
Sagen wir das Backup soll jede Nacht um 2:30 Uhr laufen. Wir erstellen in dem Fall ein Backup der Datei Uhrzeit.txt und zwar jede(n) Wochentag, Monat, Tag ABER zur zweiten Stunde und zur dreißigsten Minute, also:
30 2 * * * cp /root/Uhrzeit.txt /root/Uhrzeit.txt.bak

Die Grundlagen von Cronjobs solltest du somit nun verstanden haben. Dadurch, dass wir den crontab-Befehl zum Bearbeiten benutzt haben, sagt uns der Editor beim Schließen, ob noch ein Fehler vorliegt. Schließe denn Editor („nano“ z.B. mit Strg + O & Strg + X) und schaue, ob der Cron erfolgreich installiert wurde.

Eine Liste der installierten Cronjobs kannst du dir mit crontab -l ausgeben lassen.

[to be continued]