Cronjob

Cronjob

Copyright ┬ę Shutterstock/Paolo De Gasperis

Was ist ein Cronjob?

Richtig eingesetzt, erleichtert ein Cronjob die t├Ągliche Arbeit, auch im Marketing-Bereich. Er bezeichnet eine automatisch ausgef├╝hrte Aufgabe am Rechner zu einer individuell festgelegten Zeit. Die Informationen und Fakten des Beitrags helfen, das Prinzip zu verstehen und praktisch anzuwenden.

1. Teil: Allgemeines zum Cronjob

Cronjob und Cron-Daemon

Der Ausdruck Cronjob leitet sich vom griechischen Wort “chronos” (Zeit) und dem englischen Begriff “job” (u.a. Aufgabe, Sache) ab. Man kann den Terminus also gut und gerne mit “Zeitaufgabe” ├╝bersetzen. Anders ausgedr├╝ckt: Eine wichtige, immer wiederkehrende Aufgabe wird fortlaufend zu einer vorab definierten Zeit durchgef├╝hrt.

Um die zeitbasierte Ausf├╝hrung solcher Prozesse (Cronjobs) zu automatisieren, ist ein sogenannter Cron-Daemon erforderlich. Dabei handelt es sich um einen speziellen Dienst, der die F├Ąhigkeit mitbringt, Skripte und/oder Programme zu vorgegebenen Zeiten zu starten.

Hinweis: Cron-Daemon und Cronjob beziehen sich auf Unix und unixartige Betriebssysteme wie Linux, BSD und macOS.

Was ist eine Crontab?

Alle entscheidenden Daten des in regelm├Ą├čigen Abst├Ąnden auszuf├╝hrenden Cronjobs – dieser ist letzten Endes nichts anderes als ein gro├čer Befehl – werden in einer Crontab, also einer benutzereigenen Tabelle, gespeichert. Der Begriff Crontab – von lateinisch “tabula” (u.a. Tafel, Brett) – bedeutet so viel wie “Zeittafel”.

In der Regel setzt sich die Crontab aus sechs (manchmal auch aus sieben) Spalten zusammen. Dabei dienen die ersten f├╝nf der konkreten Zeitangabe:

  • Spalte 1: Minute
  • Spalte 2: Stunde
  • Spalte 3: Tag
  • Spalte 4: Monat
  • Spalte 5: Wochentag

Die sechste Spalte enth├Ąlt den jeweiligen Befehl.

Tipp

Sieben Spalten finden sich nur in einer systemweiten Crontab. Dann steht zwischen den f├╝nf Spalten, die der Zeitangabe gewidmet sind, und der Spalte f├╝r den eigentlichen Befehl noch eine weitere Spalte. Diese enth├Ąlt den Benutzernamen, unter dem das Kommando ausgef├╝hrt werden soll.

Cronjob ausf├╝hren

Ist der gew├╝nschte Cronjob korrekt in die Crontab eingetragen und funktioniert der Cron-Daemon ohne Einschr├Ąnkung, wird der Befehl zum eingetragenen Zeitpunkt umgesetzt. Bei dem Kommando handelt es sich in den meisten F├Ąllen um ein Shell- oder PHP-Skript.

Wichtig: Der Cron-Daemon startet den jeweiligen Cronjob immer (nur) zur eingetragenen Zeit. In diesem Moment muss der Rechner unbedingt eingeschaltet sein, ansonsten wird der Befehl nicht ordnungsgem├Ą├č ausgef├╝hrt. Wenn man Pech hat und der Rechner zur gefragten Zeit ausgeschaltet ist, findet etwa eine elementare Datensicherung (Backup) nicht statt, was unter Umst├Ąnden Probleme nach sich zieht.

Damit einhergehend gilt es zu erw├Ąhnen, dass man nur dann mit vielen Cronjobs operieren sollte, wenn der Rechner durchgehend l├Ąuft. Wer dies nicht sicherstellen kann, sollte Cron durch Anacron erg├Ąnzen.

Tipp

Anacron fungiert als cron-├Ąhnlicher Taskplaner, ist jedoch nicht auf das andauernde Laufen des Systems angewiesen.

2. Teil: Cronjob und Marketing

Was bringt ein Cronjob f├╝rs Marketing?

Hier einige Beispiele f├╝r die praktische Anwendung von Cronjobs (die meisten sind auch f├╝r Marketing-Abteilungen von Unternehmen interessant):

Ein Cronjob hilft unter anderem, veraltete Datens├Ątze zu entfernen – beispielsweise Log-Eintr├Ąge, die 30 Tage ├╝berschritten haben, oder inzwischen ├╝berfl├╝ssig gewordene Kommentare aus vergangenen Zeiten.
Mit einem Cronjob l├Ąsst sich f├╝r eine kleinere Datenbank (weniger als 20 MB) ein Backup kreieren. Nur bei gr├Â├čeren Datenbanken ist die Automatik mit Vorsicht zu genie├čen.
Steht f├╝r ein bestimmtes System, etwa WordPress, ein Update zur Verf├╝gung? Dann macht es immer Sinn, via Cronjob die neueste Version zu installieren.
Ein Cronjob kann dazu dienen, eine spezielle Statistik regelm├Ą├čig zu aktualisieren. Beispiel: Einmal pro Tag eine Zusammenfassung s├Ąmtlicher Aufrufzahlen einzelner Blogartikel “anfordern”.
Des Weiteren eignet sich ein Cronjob perfekt, um Rechnungen zu generieren und zu verschicken. Schlie├člich ist dies eine Aufgabe, die geb├╝ndelt und in klar definierten Zeitabst├Ąnden ausgef├╝hrt werden kann.
Will man neue Artikel automatisiert ver├Âffentlichen (“planen”), stellt ein Cronjob ebenfalls eine sehr gute L├Âsung dar.
Firmen, die ihren Kunden Newsletter bieten, haben die M├Âglichkeit, die E-Mails mit mehreren Cronjobs zu versenden (im Idealfall St├╝ck f├╝r St├╝ck, beispielsweise 100 pro Durchlauf mit st├╝ndlichem Abruf).
Es ist eine deutliche Erleichterung, die XML-Datei f├╝r einen RSS-Feed regelm├Ą├čig per Cronjob zu generieren (statt umst├Ąndlich nach jeder Ver├Âffentlichung neu zu erstellen).

Tipp

Durch den Einsatz eines Cronjob m├╝ssen ben├Âtigte Statistiken nicht mit jedem Seitenaufruf neu initiiert werden.

3. Teil: Technische Aspekte und Details

Cronjob in Crontab eintragen

Um einen Cronjob in die Crontab einzutragen, verwendet man vorwiegend Zahlen und das Stern-Symbol. Wird Letzteres (also “*”) in ein Feld eingegeben, so bedeutet dies “beliebig” beziehungsweise “alles”.

Beispiel

Ist im Feld f├╝r den Monat ein Stern enthalten, so hei├čt das, dass der Befehl in jedem Monat durchgef├╝hrt werden soll. Es kommt dann auf die Angaben in den ├╝brigen Feldern an, an welchem Tag (oder welchen Tagen), um welche Uhrzeit(en) und so weiter der Cronjob erfolgt.

Wer das System und Prinzip des Cron-Daemons mit der Crontab einmal verstanden hat, tut sich leicht, Cronjobs zu erstellen.

Die folgende ├ťbersicht zu den m├Âglichen Werten, die in die Crontab eingetragen werden k├Ânnen, soll noch einmal einen zusammenfassenden ├ťberblick geben:

  • Minute: 0-59
  • Stunde: 0-23
  • Monatstag: 1-31
  • Monat: 1-12 oder January, February etc.
  • Wochentag: 0-6 (0 = Sonntag, 1 = Montag, …, 6 = Samstag) oder Sunday, Monday etc.
  • Befehl: individuell

In jede Spalte, bis auf die zum Befehl, l├Ąsst sich auch der Stern (“*”) eintragen. Zudem bietet die Crontab die Option, einzelne Werte durch Kommata getrennt aufzuz├Ąhlen (wenn ein bestimmter Cronjob zu mehreren Zeiten ausgef├╝hrt werden soll). Auch Bereiche k├Ânnen angegeben werden (etwa in der Spalte Monatstag “1-4”, was bedeutet, dass der Cronjob vom ersten bis zum vierten des Monats ausgef├╝hrt werden soll).

Tipp

Wer das System und Prinzip des Cron-Daemons mit der Crontab einmal verstanden hat, tut sich leicht, Cronjobs zu erstellen.

So k├Ânnte eine Crontab aussehen

Hier eine beispielhafte Tabelle mit verschiedenen Eintragungen zu Zeitpunkten f├╝r Cronjobs (mit kurzen Erl├Ąuterungen, aber ohne konkreten Befehl):

 

Minute

Stunde

Tag des Monats Monat Wochentag

Bedeutung

* * * *

*

Durchgehend (min├╝tlich)
0 1 *

*

*

T├Ąglich um 1:00 Uhr

8

* * * *

Acht Minuten nach jeder vollen Stunde

30, 40

2 * * 2-4

Dienstags bis donnerstags um 2:30 Uhr und um 2:40 Uhr

59

23 * * 0 Jeden Sonntag um 23:59 Uhr
0 8 1-9 6 1

vom ersten bis zum neunten Juni UND an jedem Montag im Juni um 8:00 Uhr morgens

Hinweis: Dem Sonntag ist bei den meisten Programmen sowohl die “0” als auch die “7” zugeordnet. Manch Cron-Syntax erlaubt jedoch lediglich die “0”. Alle anderen Wochentage erhalten die Zahlen 1 (f├╝r Montag) bis 6 (f├╝r Samstag).

Einen Cronjob einrichten

Es folgt eine verst├Ąndliche Anleitung (im Schritt-f├╝r-Schritt-Format) zur Einrichtung eines Cronjobs. Zwar variieren die “Fenster” von Programmanbieter zu Programmanbieter, das Grundprinzip ist jedoch immer dasselbe.

1. Schritt: Zun├Ąchst das “Control Panel” des jeweiligen Programms ├Âffnen.

Tipp: Dazu ist es eventuell erforderlich, sich erst einmal einzuloggen.

2. Schritt: In die “Geplanten Aufgaben” einsteigen – etwa ├╝ber “Websites & Domains”.

Hinweis: Die Button-Bezeichnungen unterscheiden sich von Programm zu Programm, hier werden lediglich Beispiele erw├Ąhnt. Man muss sich erst ein wenig mit der jeweiligen Cron-Ausgabe vertraut machen.

3. Schritt: Anschlie├čend auf “Aufgabe hinzuf├╝gen” (oder ein vergleichbares Element) klicken.

4. Schritt: Den gew├╝nschten Cronjob erstellen. Dabei kann man die einzelnen Felder individuell ausf├╝llen.

  • 4a) Minute(n) eingeben.
  • 4b) Stunde(n) eingeben.
  • 4c) Tag(e) des Monats eingeben.
  • 4e) Monat(e) eingeben.
  • 4f)┬á Wochentag(e) eingeben.
  • 4g) Befehl eingeben.

5. Schritt: Einstellungen pr├╝fen und mit einem Klick auf “OK” best├Ątigen.

In der Folge ist der Cronjob gespeichert und wird planm├Ą├čig ausgef├╝hrt, sofern der Rechner zum gefragten Zeitpunkt l├Ąuft.

4. Teil: Geschichtliche Entwicklung

Fr├╝he Cron-Versionen

In Unix Version 7 war Cron ein neuartiger Systemdienst – entwickelt und geschrieben vom kanadischen Informatiker Brian W. Kernighan. Dieser Dienst wurde aufgerufen, wenn das Betriebssystem im Mehrbenutzermodus agierte. Kernighan setzte auf einen einfachen Algorithmus: Einmal pro Minute wurde die Crontab eingelesen und ausgewertet. Alle Befehle, deren Ausf├╝hrung f├╝r ebendiese Minute geplant war, schritten mit Root-Rechten zur Umsetzung.

Diese erste Cron-Version zeigte sich relativ simpel und robust. Allerdings verbrauchte sie auch dann Ressourcen, wenn es nichts zu tun gab. In den sp├Ąten 1970er-Jahren wurde bei einem Lasttest an der Purdue University festgestellt, dass der Dienst das System zu stark beanspruchte. ├änderungen mussten also her.

Hinweis: Sp├Ąter erhielt Cron den bis heute g├╝ltigen Namen Cron-Daemon.

Laufende Verbesserungen f├╝r eine Mehrbenutzerf├Ąhigkeit

Mit der Ver├Âffentlichung von Unix System V erschien auch die aktualisierte Version von Cron. Das Ziel der Anpassungen war, die Cron-F├Ąhigkeiten nicht nur f├╝r den “Superuser” des Systems, sondern f├╝r alle Nutzer zu erweitern.

Zu diesem Zweck musste sichergestellt werden, dass Cron den Gro├čteil der Zeit inaktiv verbrachte und nur t├Ątig wurde, wenn es galt, eine Aufgabe (einen Cronjob) auszuf├╝hren. Dank der Forschungen und Gedanken von WR Franta und Kurt Maly sowie Robert Brown und Keith Williamson gelang das Vorhaben schlie├člich.

Ma├čgeblich f├╝r den enormen Fortschritt war die durch Brown geschaffene Implementierung des Franta-Maly-Event-List-Managers (ELM). Williamson entwickelte schlie├člich den Brown’schen Prototypen zu einem Produktionsumgebungsservice weiter.

Es gelang dem damaligen Doktoranden, den Ressourcenverbrauch der Cron-Implementierung so weit zu reduzieren, dass er fast nur noch von der Menge und H├Ąufigkeit der Cronjobs abh├Ąngig war (Ausnahme: ├ťberwachung der Crontab).

Hinweis: Schon Ende 1979 ging das neue Mehrbenutzer-Cron an der Purdue University in Gebrauch. Die Verbesserungen traten also relativ schnell zutage.

Nachdem Williamson sein Studium der Informatik abgeschlossen hatte, zog es ihn zu den Bell Laboratories (Murray Hill, New Jersey). Er nahm seine Fassung von Cron mit zu seiner neuen Arbeitsstelle, um weiter an seinem Projekt zu feilen.

Gemeinsam mit Kollegen integrierte Williamson den Unix-Befehl “at” in Cron. Zudem verschob das Team die Crontab-Dateien in ein gemeinsames Spool-Verzeichnis – zuvor befanden sich diese im Benutzerverzeichnis. Im Zusammenhang mit der Neuerung f├╝hrten Williamson und Co. das Kommando “crontab” ein. Mit dem Befehl konnten Benutzer ihre Dateien einfach in das Spool-Verzeichnis kopieren.

Sp├Ąter erschien diese schon ziemlich fortgeschrittene Version von Cron mehr oder weniger unver├Ąndert in diversen Systemen:

  • Unix System V
  • BSD
  • Solaris (Sun Microsystems)
  • IRIX (Silicon Graphics)
  • HP-UX (Hewlett-Packard)
  • IBM AIX

Moderne Ausgaben

Als das GNU-Projekt und Linux allm├Ąhlich aufkamen, erschienen auch neue Crons. 1987 schrieb Paul Vixie das nach ihm selbst benannte Vixie Cron. Die Version setzte sich schnell durch und entwickelte sich zu einer der beliebtesten und h├Ąufigsten Crons.

Ende 1993 wurde die dritte Version des popul├Ąren Vixie Crons ver├Âffentlicht. Die Variante 4.1 erhielt den Namen ISC Cron und kam zu Beginn des Jahres 2004 auf den Markt.

Hinweis: Vixie Cron Version 3 kommt mit einigen geringf├╝gigen Bugfixes in BSD und auch in den meisten Linux-Distributionen zum Einsatz.

Weitere Neuerscheinungen im ├ťberblick:

  • RedHat-Fork von Vixie Cron 4.1 im Jahr 2007 (Cronie-Projekt)
  • Anacron 2.3 im Jahr 2009

Wichtig: Anacron ist – wie weiter oben bereits angedeutet – kein unabh├Ąngiger Cron-Daemon. Stattdessen st├╝tzt er sich zur Ausf├╝hrung von Cronjobs auf einen “echten” Cron-Daemon.

Zu den popul├Ąrsten Implementierungen z├Ąhlen weiterhin “dcron” – eine Entwicklung von DragonFly-BSD-Gr├╝nder Matt Dillon – und “fcron”.

5. Teil: Zusammenfassung

Bei Cronjobs handelt es sich um wiederkehrende Aufgaben, die automatisiert ausgef├╝hrt werden. Um dies zu bewerkstelligen, ben├Âtigt man einen so genannten Cron-Daemon. Die Jobsteuerung sorgt bei modernen unixartigen Betriebssystemen wie Linux, BSD und macOS f├╝r eine ressourcenschonende Umsetzung.

In der Regel f├╝hren Cronjobs Programme aus, die einen immensen Einfluss darauf haben, dass ein System funktionsf├Ąhig bleibt.

Tipp

Unter Linux ist Cron ebenso vorinstalliert wie auf dem Mac.


Sie haben noch Fragen?

Kontaktieren Sie uns

Kostenloser SEO-Check der OSG


Weitere Inhalte