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 MonatsMonatWochentag

Bedeutung

****

*

Durchgehend (minütlich)
01*

*

*

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**0Jeden Sonntag um 23:59 Uhr
081-961

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?

Kontaktieren Sie uns

Kostenloser SEO-Check der OSG


Weitere Inhalte