Was ist ein Cronjob


Ein Cronjob kommt aus der UNIX Welt. Es gibt keine richtige Übersetzung für «cron». Wie auch immer, ein Cronjob ist ein Task, welcher ein Computer periodisch unabhängig ausführt. Es wird vor allem da verwendet, wo Daten verarbeitet werden müssen, wenn es nicht auf die Zeit drauf an kommt. Am Besten an einem Beispiel:

Beispiele für dein Einsatz eines Cronjobs

  1. Die Datenbank einer Webseite sollte regelmässig gesichert werden (z.B. einmal täglich). Man könnte einmal pro Tag sich einen SQL Dump erstellen (von Hand). Klaro ist das nicht sehr effizient, denn was passiert, wenn man in den Ferien ist? Daher kann eben ein sog. Cronjob gemacht werden, der 1x pro Tag die DB sichert (natürlich passiert das vornehmlich in der Nacht, wenn der Server sowieso nicht allzu stark belastet ist).
  2. Cache leeren (z.B. immer um Mitternacht)
  3. Rechenintensive Tasks durchführen, welche nicht Zeitkritisch sind und daher auf Randstunden verschoben werden können.
    Also eigentlich ist es nichts kompliziertes (solange es funktioniert) und solange man sich nicht mit den Details beschäftigt, sondern es einfach benutzt.

Cron einrichten

Unter Linuxsystem ist es trivial einen Cron einzurichten. Terminal öffnen und dann einfach folgende Zeile eingeben:

crontab -e

Danach kann der Crontab via vim, nano oder so editiert werden. Dabei gilt zu beachten, dass das Script mit dem Benutzer ausgeführt wird, der den Cron eingerichtet hat. Wenn ein auszuführendes Script also Root Rechte benötigt, ich den Crontab jedoch mit dem User «rapsli» einrichte, dann wird das nicht funktionieren.

Und Konkret

Minute Stunde Tag Monat Wochentag Bedeutung
0 0 * * * Täglich null Uhr
5 * * * * Fünf Minuten nach jeder vollen Stunde
*/5 * * * * Alle 5 Minuten
59 23 * * 0 Jeden Sonntag (Sonntag kann als 0 oder 7 geschrieben werden) um 23:59 Uhr
20,30 1 * * 1-5 Montags bis Freitags jeweils um 01:20 und 01:30 Uhr
0 1 1-7 12 1 Am 1. bis 7. Dezember sowie an jedem Montag im Dezember um ein Uhr nachts

Oder noch konkreter

5 * * * * /home/rapsli/somescript.sh

-> Immer um 5 nach jeder vollen Stunde wird das Script somescript.sh ausgeführt.

Reboot Spezialtrick

Es ist übrigens auch möglich nicht einen zeitlichen Trigger für einen Cronjob zu setzen, sondern das Event Reboot (Neustart). Das würde dann wie folgt aussehen:

@reboot /home/rapsli/somescript.sh

Cronjob für Windows

Ich glaube, das habe ich nie verwendet und mir war auch nicht bewusst, dass es so etwas gibt. Eine kurze Google Suche hat auch meinen Horizont erweitert: der Task Scheduler. Ich würde mal vorsichtig behaupten das ein Cronjob in der Windows Welt eher eine Schattendasein ist, während er in der Linux Welt allgegenwärtig ist.