Cronjob

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

Een Cronjob of crontab is een Unix commando dat een programma of script op een ingesteld tijdstip uitvoert. Cronjobs worden gebruikt in Unix-achtige systemen als Linux, BSD en Apple Macintosh. Het woord 'cron' is afkomstig van het Engelse woord chronograph, dat een soort stopwatch is. Later is hier job (taak) aan toegevoegd. Een cronjob die een systeem service draait wordt een daemon genoemd. Dit zijn meestal servertoepassingen.

Vaak worden Cronjobs gebruikt voor het ophalen van de e-mail, het verzenden van e-mail of het controleren op updates. Als een Cronjob op een (web)server wordt gebruikt, is dat vaak om een back-up van een database te maken, een PHP of perl script aan te roepen of een servercommando uit te voeren. De meeste webhosters bieden cronjobs aan in een control panel zoals Plesk of DirectAdmin.

Cronjobs kunnen worden vergeleken met de taakplanner onder Microsoft Windows en werken exact hetzelfde. Voor wie cronjobs via de terminal lastig in te stellen vindt, zijn er verschillende programma's met een grafische gebruikersomgeving (GUI) waarmee via een paar muisklikken een cronjob aangemaakt kan worden.

Geschiedenis[bewerken]

Cronjobs voor Seventh Edition Unix, ontwikkeld door Brian Kernighan, was een systeemservice (later daemons genoemd) aangeroepen vanaf /etc/inittab wanneer het systeem werd opgestart in multi-user mode. Vervolgens doorloopt het systeem het volgende proces:

Uitlezen van /usr/etc/crontab. Er wordt gekeken of er cronjobs zijn, zoja dan worden ze gestart door de root. Indien er meerdere cronjobs zijn wordt deze stap herhaald. Er wordt op elk moment gekeken of er een cronjob uitgevoerd moet worden en zo nodig wordt dat ook gedaan. Dit was het simpele maar werkende begin van de cronjobs die we tegenwoordig kennen.

Syntaxis[bewerken]

Een cronjob wordt gemaakt met het unix commando crontab. Cronjobs kunnen de volgende tekens bevatten:

Teken Commando
* Herhalen (minuten, uren, dagen, weken, maanden, jaren)
*/5 Herhalen iedere 5 (minuten, uren, dagen, weken, maanden, jaren)
5 Uitvoeren op de 5e (minuten, uren, dagen, weken, maanden, jaren)
5-10 Uitvoeren op de 5e tot de 10e (minuten, uren, dagen, weken, maanden, jaren)
5,10,15,16,17 Uitvoeren op de 5e, 10e, 15e, 16e en 17e (minuten, uren, dagen, weken, maanden, jaren)
30-36/2 Uitvoeren op de 30e, 32e, 34e en 36e (minuten, uren, dagen, weken, maanden, jaren)

Speciale opties voor het crontab commando:

Commando Omschrijving Vergelijkbaar aan
@reboot Eenmaal uitvoeren bij opstarten. n.v.t.
@yearly Eenmaal uitvoeren per jaar 0 0 1 1 *
@annually Eenmaal uitvoeren per jaar 0 0 1 1 *
@monthly Eenmaal uitvoeren per maand 0 0 1 * *
@weekly Eenmaal uitvoeren per week 0 0 * * 0
@daily Eenmaal uitvoeren per dag 0 0 * * *
@midnight Eenmaal uitvoeren per dag 0 0 * * *
@hourly Eenmaal uitvoeren per uur 0 * * * *

De cronjobs moeten worden ingesteld via de volgende volgorde:

<minuten> <uren> <dagen> <maanden> <weekdagen> <commando>

Het overzicht hieronder maakt duidelijk wat de mogelijke opties zijn.

.---------------- Minuut (0 - 59) 
|  .------------- Uur (0 - 23)
|  |  .---------- Dag van de Maand (1 - 31)
|  |  |  .------- Maand (1 - 12) of januari, februari, maart... 
|  |  |  |  .---- Dag van de week (0 - 6) (zondag is 0 of 7) of zondag, maandag, dinsdag... 
|  |  |  |  |
*  *  *  *  *  commando dat uitgevoerd moet worden

Voorbeelden[bewerken]

Allereerst moet het script uitvoerbaar gemaakt worden door middel van chmod. Het script moet een header of meta tag hebben om de parser of terminal te laten weten met wat voor bestand het te maken heeft. De allereerste regel ziet er als volgt uit:

#!/pad/naar/bash

De cronjob ziet er dan zo uit:

* * * * * /pad/naar/script

De bovenstaande code kan ook gecombineerd worden tot de volgende cronjob:

* * * * * /pad/naar/bash /pad/naar/script