CronJob

Aus Wiki
Wechseln zu: Navigation, Suche

Definition

Abbildung: CronJob - Autor: Seobility - Lizenz: CC BY-SA 4.0

Cron ist ein zeitbasierter Job-Scheduler in Unix oder Unix-ähnlichen Computer-Betriebssystemen. Benutzer verwenden Cron, um Jobs, das heißt die Ausführung von Befehlen oder Shell-Skripts zu festgelegten Zeiten, Terminen oder Intervallen zu planen. Cron kann zur Automatisierung der Systemwartung oder -verwaltung, zum Download von Dateien aus dem Internet oder zum regelmäßigen E-Mail Versand genutzt werden. Es handelt sich hierbei um einen Daemon, also einen Hintergrundprozess, der immer auf dem Server läuft. Die Aufgaben, die Cron ausführen soll, werden als CronJob bezeichnet. Ursprünglich stammt der Name Cron vom griechischen Gott der Zeit "chronos".

Anwendungsmöglichkeiten von CronJobs

CronJobs können für einmalige Aufgaben, wie einem geplanten Herunterfahren des Servers zu einer bestimmten Zeit verwendet werden. In den meisten Fällen wird ein CronJob von einem Benutzer jedoch für die automatisierte Ausführung periodisch wiederkehrender Aufgaben eingesetzt, zum Beispiel für das Bereinigen von Datenbanken durch Entfernen veralteter Einträge, Logfiles und Kommentare oder zum Erstellen regelmäßiger Statistiken zur Anzahl der Benutzer einer Website.

Weitere Anwendungsmöglichkeiten sind die Aktualisierung von RSS-Feeds, die Veröffentlichung neuer Inhalte auf einer Website zu einem bestimmten Termin, die gebündelte Generierung von Rechnungen oder der automatisierte Newsletterversand. Ebenso kann das Backup einer Datenbank oder die Installation neuer Softwareversionen mithilfe von CronJobs zeitgesteuert durchgeführt werden.

Aufbau und Syntax der CronTab Datei

Cron verwendet spezielle Konfigurationsdateien, die sogenannten CronTab Dateien, die eine Liste der auszuführenden Jobs enthalten. CronTab steht für Cron Table. Jede Zeile in der CronTab Datei wird als CronJob bezeichnet. Dieser ähnelt jeweils einer Reihe von Spalten, die durch ein Leerzeichen getrennt sind. Jede Zeile gibt an, wann und wie oft ein bestimmter Befehl oder ein bestimmtes Skript ausgeführt werden soll.

In einer CronTab Datei werden leere Zeilen oder Zeilen, die mit #, Leerzeichen oder Tabulatoren beginnen, ignoriert. Zeilen, die mit # beginnen, werden als Kommentar der Benutzer betrachtet.

Aktive Zeilen in einer Crontab sind entweder die Deklaration einer Umgebungsvariablen oder ein CronJob. Kommentare sind in den aktiven Zeilen nicht zulässig.

Die CronTab Datei kann in einem Kommandozeileninterpreter durch Eingabe von "crontab-e" aufgerufen werden. Die Befehle in der CronTab Datei und ihre Laufzeit werden vom Cron-Dämon überprüft, der sie im Systemhintergrund auf dem Server ausführt. Jeder CronTab hat den folgenden grundsätzlichen Aufbau mit sechs Spalten, die wie eine Tabelle angeordnet sind:

* * * * * auszuführender Befehl

Die ersten fünf Spalten sind die Zeitwerte, mit denen die Ausführung des Befehls gesteuert wird. Von links nach rechts sind dies:

  • Minute, angeben als 0 - 59
  • Stunde, angeben als 0 - 23
  • Tag, angegeben als 1 - 31
  • Monat, angegeben als 1 - 12
  • Wochentag, angegeben als 0 - 7, 0 oder 7 sind ein Sonntag

Für die Zeitwerte können die Optionen "*" für die Ausführung zu jeder Zeit (also zu jeder Minute, Stunde, Tag, Monat oder Wochentag), "*/n" für die Ausführung alle n (Minuten, Stunden etc.) und "n,x,y" für die Ausführung des Befehls am / um n, x oder y genutzt werden. In der letzten, sechsten Spalte, wird der relative oder absolute Pfad des Scripts, das ausgeführt werden soll, angegeben. Der CronJob wird ausgeführt, wenn Minute, Stunde, Monat und Tag des Monats oder Wochentag mit der aktuellen Uhrzeit übereinstimmen.

Einige Cron-Implementierungen unterstützen darüber hinaus spezielle Zeichenfolgen. Diese Zeichenfolgen werden anstelle der ersten fünf Felder in der CronTab Datei verwendet, wobei jede Zeichenfolge eine bestimmte Häufigkeit angibt:

  • @yearly / @annually: Ausführung einmal pro Jahr um Mitternacht des 1. Januar (0 0 1 1 *)
  • @monthly: Ausführung einmal im Monat um Mitternacht des ersten Tages des Monats (0 0 1 * *)
  • @weekly: Ausführung einmal wöchentlich um Mitternacht des Sonntags (0 0 * * 0)
  • @daily: Ausführung einmal täglich um Mitternacht (0 0 * * *)
  • @hourly: Ausführung zu Beginn jeder Stunde (0 * * * *)
  • @reboot: einmalige Ausführung beim Start des Systems

Beispielcode für CronJobs

Ein Beispiel für einen CronJob ist die Datenbanksicherung an jedem Tag der Woche jeweils um 2 Uhr morgens. Die CronTab Datei hätte folgenden beispielhaften Inhalt:

0 2 * * * / bin / sh backup.sh

Manchmal kann es erforderlich sein, die Ausführung von Aufgaben nur für ausgewählte Monate zu planen. Das folgende Beispielskript wird in den Monaten Januar, Mai und August ausgeführt.

* * * 1,5,8 * / bin / script.sh

Wenn Aufgaben nur an ausgewählten Tagen zu einer bestimmten Uhrzeit, zum Beispiel an jedem Sonntag und Freitag um 17:00 Uhr, ausgeführt werden sollen, könnte die CronTab Datei folgendermaßen aussehen:

0 17 * * 0, 5 / bin / script.sh

Bedeutung des CronJob für das Online-Marketing

Mit CronJobs können verschiedene Aufgaben im Online-Marketing automatisiert und so die Effizienz gesteigert werden. Neben der Automatisierung von zeitaufwendigen Arbeiten können CronJobs beispielsweise dazu genutzt werden, um Besucherstatistiken einer Website auf dem Server anzulegen und die gesammelten Statistiken in bestimmten zeitlichen Abständen automatisch an einen Empfänger zu senden. In Verbindung mit CMS können CronJobs dazu dienen, Metriken automatisch zu berechnen oder Newsletter zu bestimmten Terminen im Rahmen von Marketing-Kampagnen zu versenden.

Weiterführende Links