CronJob


CronJobs sind wiederkehrende Aufgaben, die automatisiert auf unixartigen Betriebssystemen wie Linux oder iOS/Mac OS X sowie auf Serverumgebungen ausgeführt werden können. Der sogenannte Cron-Daemon bildet die Grundlage für CronJobs. Er fungiert als zeitlicher Impuls für die verschiedenen Aufgaben und läuft im Hintergrund des Systems mit, sobald es gestartet wird. Sind CronJobs definiert, werden diese zu den angegebenen Zeiten vom System automatisch durchgeführt. Häufige CronJobs sind die Dateiverwaltung, das Löschen oder Archivieren von Daten oder aber die Erstellung von Besucher-Statistiken des Servers beziehungsweise der Website. Das Akronym Cron steht für „command run on notice“.

Geschichte

Ursprünglich war Cron ein Systemdienst in Unix, der bei mehreren Benutzern des Systems verwendet wurde. Der CronTab wurde minütlich gestartet; dort notierte Befehle wurden vom System mit einem Zeitstempel und den Rechten des Benutzers (Root Server) ausgeführt. Es diente der Verwaltung der Systems. Diese Funktion hat sich bis heute erhalten – allerdings verwenden heutige Cron-Daemons keine virtuelle Zeit mehr (zum Beispiel beim Aufruf von Cron durch den Benutzer), sondern Echtzeit bei ständig laufenden Servern.

Ähnlich wie die Stapelverarbeitung oder Batch-Programmierung werden CronJobs sukzessiv und sequentiell abgearbeitet. Die Daten sind in einer Tabelle mit bestimmten Argumenten notiert, die Informationen über den Zeitpunkt und Befehle zur Ausführung beinhalten. Der Vorteil bei Cron besteht in der genauen Angabe des Zeitstempels, der einen CronJob auslöst.

Während Batch-Programmierung oft bei der Installation und Konfiguration von Servern verwendet wird, kommen CronJobs häufig bei der Verwaltung des Systems zum Einsatz. Meist erfolgt dies zu Zeiten, in denen sich nur wenige Besucher auf der Website befinden, da CronJobs erhebliche Ressourcen des Servers beanspruchen können. Verschiedene Analyse- und Verwaltungsaufgaben können mit Cron exakt und automatisch bewältigt werden.

Funktionsweise

Die Voraussetzungen für die Verwendung von CronJobs sind ein unixartiger Server wie Linux oder BSD-Betriebssysteme (BSD: Berkely Software Distribution) sowie ein Dedicated Server, der nicht mit anderen Kunden geteilt wird. Es ist zwar möglich, CronJobs auf Shared Servern durchzuführen, es würde jedoch auch die Ressourcen der anderen Kunden verbrauchen. Der Zugang zum Webserver erfolgt per SSH (Secure Shell) oder Telnet Klient, um eine sichere Verbindung aufzubauen.[1] Der Upload von Cron-Dateien und Skripten kann mithilfe eines FTP-Programms geschehen.

Die Datei crontab

Grundlage für verschiedene CronJobs ist die Datei crontab. Sie kann mithilfe des Befehls

crontab -e

in jedem Kommandozeileneditor aufgerufen werden. Programme wie GNOME Schedule bieten eine grafische Benutzeroberfläche zur Verwaltung von CronJobs an.[2] Darüber hinaus bieten zahlreiche Websites wie corntab.com oder cronjob.de visuelle Benutzeroberflächen und weitere Services.

Der CronTab besteht aus sechs Spalten, die tabellarisch angeordnet sind. Die ersten fünf Spalten enthalten den Zeitstempel in Form von Minuten, Stunden, Tage, Monat, Wochentag. Die letzte Spalte enthält den auszuführenden Befehl. Jede Spalte wird durch ein Leerzeichen getrennt; mehrere Angaben können durch Kommata voneinander getrennt werden.

Die Syntax sieht folgendermaßen aus:

minute hour day month day-of-week command-line-to-execute

Mögliche Werte für die ersten fünf Spalten sind:

  • 0 – 59 für minute
  • 0 – 23 für hour
  • 1 – 31 für day
  • 1 – 12 für month
  • 0 – 7 für day-of-week


Häufig wird auch das Zeichen „*“ verwendet. Es steht synonym für alle Zeiteinheiten der jeweiligen Spalte. Zum Beispiel für jeden Tag oder jeden Monat. Mit @reeboot, @yearly, @monthly, @weekly, @daily und @hourly können CronJobs zudem regelmäßig ausgeführt werden, wenn kein genauer Zeitstempel vergeben werden soll. In der sechsten Spalte wird üblicherweise der absolute oder relative Pfad des auszuführenden Skriptes notiert.

Cron-Variablen

Die auszuführenden Befehle werden in Form von Umgebungsvariablen in den CronTab integriert. Meist werden PHP-, PERL- oder SHELL-Skripte verwendet. Eine Auswahl möglicher Befehle:

  • PATH: Path gibt den Pfad an, in dem Cron nach Skripten oder Befehlen sucht.
  • SHELL: Shell gibt den Kommandozeilen-Interpreter an, der das Skript ausführen soll. Die Standardeinstellung ist „/bin/sh“. Es stehen unter Unix unterschiedliche Interpreter zur Verfügung (Zum Beispiel /bin/tcsh oder /bin/csh).
  • MAILTO: Mit mailto können Benutzer angegeben werden, denen Cron die Ergebnisse des Skriptes zusendet, nachdem es durchgeführt worden ist. Die Standardeinstellung ist der auftraggebende Benutzer.
  • Für jeden CronJob können unterschiedliche Variablen definiert werden, sodass die Zeitstempel, Befehle und der Output des Skriptes an den jeweiligen Benutzer angepasst werden können. Zudem ist es möglich, per LOGFILE die Arbeit des Skriptes zu dokumentieren.

Beispiel für einen CronJob

Ein Skript, das täglich um 5:30 Uhr ausgeführt werden soll. Der Output wird an die Email-Adresse gesendet.

MAILTO=beispiel.empfänger@mail.de
30 5 * * * /usr/local/bin/pfad/test.php

Bedeutung für die Suchmaschinenoptimierung

CronJobs sind eine effektive Möglichkeit, zeitaufwendige Verwaltungs- und Auswertungsaufgaben auf einem Server automatisiert ablaufen zu lassen.[3] Es können Datenbanken bereinigt und als Backup gespeichert werden. Dateien werden archiviert oder gelöscht. Das System wird automatisch gewartet. Zudem können Besucherstatistiken für einen Webserver angelegt werden, die zum Beispiel täglich an einen Benutzer gesendet werden. Somit sind CronJobs eine Erleichterung bei einer Webanalyse, die auf Logdateien basiert. Die Daten, die ein Server speichert, sind wertvolle Informationen für die Optimierung einer Website.

Da CronJobs gemeinsam mit Skripten und teilweise auch mit Content-Management-Systemen arbeiten, sind die Anwendungsmöglichkeiten relativ groß. Je nach Skript und Content-Umgebung können Newsletter versendet, Lagerbestände überprüft oder Metriken wie Topseller und Artikelbewertungen regelmäßig neu berechnet werden. Hinzu kommt, dass die Serverauslastung mit CronJobs gewissermaßen gesteuert werden kann. Zu Zeiten, in denen nur wenige Besucher auf der Website sind, sind CronJobs deshalb besonders sinnvoll. Der Zugriff durch Cron benötigt Ressourcen. Er sollte nicht zu Lasten des Servers gehen und die Ladezeiten von normalen Besuchern beim Aufruf der Website vergrößern. Dieser Aspekt bleibt häufig unbeachtet.

Einzelnachweise

  1. How to Create a Cron Job (Scheduled Task) for Your Website or Blog thesitewizard.com. Abgerufen am 12.06.2015
  2. Cron wiki.ubuntuusers.de. Abgerufen am 02.06.2015
  3. Was Cronjobs sind und wofür sie gut sind cronjob-tipps.de. Abgerufen am 12.06.2015

Weblinks