Cronjob
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):
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.
Zunächst das “Control Panel” des jeweiligen Programms öffnen.
Tipp: Dazu ist es eventuell erforderlich, sich erst einmal einzuloggen.
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.
Anschließend auf “Aufgabe hinzufügen” (oder ein vergleichbares Element) klicken.
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.
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?