Die erste Antwort auf die Frage „Was ist ein CronJob?” lautet: Ein „Daemon“. Die zweite Antwort ist: Ein Gott. Zumindest, wenn man sich nur auf die den Be­deu­tungs­hin­ter­grund des Namens bezieht. Streng­ge­nom­men steht Cron zwar für „command run on notice”, also einen „Befehl, der auf eine Be­nach­rich­ti­gung hin aus­ge­führt wird“. Die Abkürzung spielt aber ebenso auf Chronos, den alt­grie­chi­schen Gott der Zeit, an. In Be­triebs­sys­te­men wie Linux oder macOS läuft der Befehl aber als Cron-Daemon (auch Cron-System genannt).

Die An­spie­lung auf den grie­chi­schen Gott der Zeit ist im Übrigen eine her­vor­ra­gen­de Esels­brü­cke, um sich Sinn und Zweck eines CronJobs ins Ge­dächt­nis zu rufen. Das Cron-System läuft im Hin­ter­grund eines Be­triebs­sys­tems und kann zu fest­ge­leg­ten Zeiten au­to­ma­ti­siert Aufgaben (Jobs) ausführen. Wenn man also Cron-System und die fest­ge­leg­te Aufgabe zu­sam­men­setzt ergibt sich daraus der Begriff CronJob.

Was genau hinter den möglichst res­sour­cen­scho­nen­den, au­to­ma­ti­siert aus­ge­führ­ten und wie­der­keh­ren­den Aufgaben steckt und wie die Technik funk­tio­niert, verraten wir in diesem Artikel.

Was ist ein Cronjob?

Ein CronJob ist eine Aufgabe, die in Be­triebs­sys­te­men au­to­ma­ti­siert abläuft. Für die Aus­füh­rung dieser Jobs gibt das System re­gel­mä­ßig Befehle aus. Dabei kann es sich durchaus um eine einzelne Aufgabe handeln, in der Regel sind es aber mehrere komplexe Aufgaben, also mehrere CronJobs. Der große Vorteil: CronJobs lassen sich stark in­di­vi­dua­li­sie­ren.

Jeder CronJob besteht aus drei Kom­po­nen­ten:

  • Skript, das aus­ge­führt werden soll
  • Befehl, der das Skript re­gel­mä­ßig ausführt
  • Aktion oder Ausgabe des Skripts

Ein prak­ti­sches Beispiel für den Einsatz sind wie­der­keh­ren­de Server-Aufgaben. So werden unter anderem der News­let­ter-Versand, Sta­tis­ti­ker­he­bun­gen oder Da­ten­bank­rei­ni­gun­gen au­to­ma­tisch durch CronJobs in die Wege geleitet.

Alle Be­triebs­sys­te­me, die über ein Cron-System bzw. einen Cron-Daemon verfügen, können Cronjobs einsetzen. Darunter fallen alle Unix- und BSD-Systeme (Berkeley Software Dis­tri­bu­ti­on) wie macOS oder Linux.

Die Be­triebs­sys­te­me können CronJobs ganz nach ihrem Motto „Command run on notice” (Be­fehls­aus­füh­rung bei Be­nach­rich­ti­gung) in zuvor de­fi­nier­ten Zeit­ab­stän­den ausführen lassen. Rou­ti­ne­auf­ga­ben können so völlig ei­gen­stän­dig ablaufen. Neben einem Be­triebs­sys­tem mit Cron-Daemon müssen folgende Vor­aus­set­zun­gen vorliegen, damit sich CronJobs ein­rich­ten lassen:

Hinweis

Es exis­tie­ren spezielle Be­nut­zer­ober­flä­chen für die einfache Ein­rich­tung von CronJobs sowie Web­hos­ting-Pakete, die vor­kon­fi­gu­rier­te CronJobs für Web­pro­jek­te be­reit­hal­ten. Für das Web­hos­ting mit Cronjobs empfehlen wir einen Blick in unseren Cronjob-Hil­fe­ar­ti­kel.

Welche Aufgaben erfüllen CronJobs?

Das wohl gängigste Ein­satz­ge­biet von CronJobs ist die Da­ten­si­che­rung. Wollen Sie bei­spiels­wei­se in re­gel­mä­ßi­gen Abständen ein Backup mit tar erstellen, um Daten zu ar­chi­vie­ren, sind CronJobs dafür bestens geeignet. Auch die Be­rei­ni­gung von Da­ten­ban­ken und die Ver­ar­bei­tung von Be­su­cher­sta­tis­ti­ken auf Websites zählen zu den typischen Ein­satz­ge­bie­ten von CronJobs.

CronJobs können im Zu­sam­men­spiel mit einem Content-Ma­nage­ment-System au­to­ma­tisch News­let­ter ver­schi­cken oder La­ger­be­stän­de von On­line­shops über­prü­fen. Sie über­wa­chen Ser­ver­aus­las­tun­gen und können neue In­for­ma­tio­nen in der Pro­dukt­be­schrei­bung – wie zum Beispiel die durch­schnitt­li­che User­be­wer­tung – au­to­ma­tisch anpassen.

Hinweis

Die au­to­ma­ti­sier­ten Aufgaben von CronJobs sind so viel­fäl­tig, dass sie mit Bedacht ein­ge­setzt werden müssen, denn sie benötigen eine große Menge Res­sour­cen. Deshalb gilt es, bei jedem CronJob abzuwägen, ob er wirklich sinnvoll ist – und vor allem: wann er aus­ge­führt werden soll. Passende PHP-Skripte sorgen dafür, dass CronJobs nur dann ablaufen, wenn sie andere Abläufe nicht stören.

Die wich­tigs­ten Aufgaben im Überblick:

  • Da­ten­ban­ken be­rei­ni­gen: Veraltete Da­ten­sät­ze werden entfernt, darunter fallen veraltete Kom­men­ta­re oder nicht mehr aktuelle Login-Einträge.
     
  • Sta­tis­ti­ken erstellen: CronJobs können z.B. täglich den Sei­ten­auf­ruf einer Seite auf den neuesten Stand bringen.
     
  • RSS-Feed ak­tua­li­sie­ren: Hierbei kann die XML-Datei re­gel­mä­ßig per CronJob neu generiert werden.
     
  • Planung und Ver­öf­fent­li­chung neuer Inhalte
     
  • News­let­ter-Versand: E-Mails können über einen be­stimm­ten Zeitraum versendet werden.
     
  • Rech­nun­gen ge­ne­rie­ren: Rech­nun­gen können – gebündelt und in festen Zeit­in­ter­val­len – selbst­stän­dig erstellt und ver­schickt werden.
     
  • Datenbank-Backup: Dies bezieht sich über­wie­gend auf kleinere Da­ten­ban­ken, die weniger als 20 MB umfassen.
     
  • Machine Learning: Per CronJob können künst­li­che In­tel­li­gen­zen zu einer fest­ge­leg­ten Zeit mit neuen Da­ten­sät­zen versorgt werden.
     
  • Updates: Software-Updates lassen sich zu einer fest­zu­le­gen­den Zeit anbieten.

Wie sieht ein Cronjob-Stan­dard­be­fehl aus?

Die Mög­lich­keit zur In­di­vi­dua­li­sie­rung ist der große Vorteil eines CronJobs. Zur Anpassung von CronJobs gibt es einen Grund­stock aus drei Variablen, die jederzeit aus­ge­führt werden können:

  1. PATH: zeigt den Pfad an, auf dem nach Befehlen oder einem Skript gesucht wird.
  2. SHELL: leitet den Befehls-In­ter­pre­ter an, der ein Skript ausführen soll.
  3. MAILTO: zeigt die Benutzer, mit denen die Er­geb­nis­se des CronJobs geteilt werden sollen; Stan­dard­mä­ßig ist dies der Abonnent.

Nutzer können Cronjobs mit diesen drei Variablen sowie beliebig vielen weiteren Variablen selbst de­fi­nie­ren. In der Regel kommen für die Befehle SHELL-, PHP- und PERL-Skripte zum Einsatz.

Hinweis

Mehr In­for­ma­tio­nen zu den Kommandos in Linux und Co. erhalten Sie in unserem Grund­la­gen­ar­ti­kel über Linux-Befehle.

Wie funk­tio­niert ein CronJob?

Damit ein CronJob seine Arbeit ver­rich­ten kann, muss im Vorfeld ein Befehl erteilt werden. Der Cron-Daemon arbeitet dann im Hin­ter­grund und führt nicht-in­ter­ak­ti­ve Jobs durch. Unter Windows ist diese Funktion im Übrigen als „Dienste” bekannt.

CronJobs sind grund­sätz­lich im Ru­he­zu­stand und warten auf ihren Befehl: entweder direkt innerhalb des Be­triebs­sys­tems oder von einem anderen Rechner im Netzwerk aus. Der Befehl erfolgt über eine Cron-Datei (einfache Textdatei), die den Auftrag zu einem spe­zi­fi­schen Zeitpunkt vorgibt.

Definiert und kon­fi­gu­riert werden CronJobs in einer Tabelle, die auch als Crontab be­zeich­net wird. Sie listet den Zeitpunkt und die Be­fehls­fol­ge, die aus­ge­führt werden soll, auf.

Hinweis

Auch das Programm, mit dem sich einzelne Crontabs be­ar­bei­ten lassen, hat den Namen „Crontab“.

Die Standard-System-Crontab-Datei „crontab“ ist im Crontab-Ver­zeich­nis /etc/cron.*/ zu finden.

Web­hos­ting
Das beste Web­hos­ting zum Spit­zen­preis
  • 3x schneller und 60 % günstiger
  • Maximale Ver­füg­bar­keit mit > 99.99 %
  • Nur bei IONOS: Bis zu 500 GB Spei­cher­platz inklusive

Vier kurze Cronjob-Beispiele

Mit dem Programm crontab lassen sich Crontabs be­ar­bei­ten. Der hierfür er­for­der­li­che Befehl lautet:

crontab -e

Die Syntax ist ver­gleichs­wei­se über­sicht­lich. So hat jeder Cronjob folgendes Format:

*     *     *     *     * Befehl der ausgeführt werden soll
-      -      -      -     -
|     |     |     |     |
|     |     |     |     +----- Wochentag (0 - 7) (Sonntag ist 0 und 7)
|     |     |     +------- Monat (1 - 12)
|     |     +--------- Tag (1 - 31)
|     +----------- Stunde (0 - 23)
+------------- Minute (0 - 59)

Der Stern * bedeutet hier, dass ein CronJob immer zum je­wei­li­gen Tag, Monat, zur Stunde oder Minute erfolgen soll. Für die Wo­chen­ta­ge und Monate können die ersten drei Buch­sta­ben des eng­li­schen Namens benutzt werden, wie sun für Sonntag. Angaben zu genauen Zeit­räu­men können bei dieser No­ta­ti­ons­form nicht gemacht werden.

Für genauere Angaben zu den Zeit­räu­men ersetzt man den Stern durch Ziffern. Setzt man für die erste Stelle 8–10, wird der Befehl in der 8., 9. und 10. Minute aus­ge­führt. Setzt man hingegen */2, wird der Befehl jede zweite Minute aus­ge­führt. Beides kann kom­bi­niert werden. Insgesamt sind drei Zeitwerte für die ersten fünf Stellen möglich:

  • = Aus­füh­rung immer (zu jeder Angabe)
  • */n = Aus­füh­rung alle n
  • n,x,y = Aus­füh­rung um/am n,x,y

Beispiel 1: CronJob als Backup ausführen

Damit jeden Morgen um 6 Uhr ein Backup aus­ge­führt wird, braucht man folgenden Befehl:

0 6 * * * /usr/bin/backup.sh

Beispiel 2: Alle 30 Minuten ein Sound

CronJobs können auch dazu genutzt werden, in re­gel­mä­ßi­gen Abständen einen Sound ab­zu­spie­len:

*/30 * * * * /usr/bin/play_sound.sh

Beispiel 3: Er­in­ne­rungs­mails

Er­in­ne­rungs-Mails um 8 Uhr und um 18 Uhr ver­schickt folgender Cronjob:

0 8,18 * * * /usr/bin/send_reminder_mail.sh

Beispiel 4: Danke, Admin

Oder man verwendet CronJob, um nie wieder den Tag des Sys­tem­ad­mi­nis­tra­tors zu vergessen:

0 0 30 07 * (echo "Danke an alle Systemadmins" | mail -s "Ein Admin schläft nicht, er root." user@domain.xy)
Zum Hauptmenü