Een cronjob is een taak die periodiek uitgevoerd kan worden door de server. Dit is handig om bepaalde acties automatisch uit te laten voeren zoals bijvoorbeeld het versturen van een periodieke rapportage, het updaten van uw website en nog veel meer.

Een cronjob opbouwen


Een cronjob bestaat uit 2 delen, de tijdsaanduiding zodat de server weet wanneer de taak uitgevoerd moet worden, en het daadwerkelijke commando. Onderstaand een voorbeeld van een cronjob:

# m h dom mon dow command
30 17 * * * /usr/local/bin/php /(pad naar homedir)/domains/domein.nl/taak.php

De tijdsaanduiding


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

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



;


Speciale opties voor het crontab commando:

CommandoOmschrijvingVergelijkbaar aan
@rebootEenmaal uitvoeren bij opstarten.n.v.t.
@yearlyEenmaal uitvoeren per jaar0 0 1 1 *
@annuallyEenmaal uitvoeren per jaar0 0 1 1 *
@monthlyEenmaal uitvoeren per maand0 0 1 * *
@weeklyEenmaal uitvoeren per week0 0 * * 0
@dailyEenmaal uitvoeren per dag0 0 * * *
@midnightEenmaal uitvoeren per dag0 0 * * *
@hourlyEenmaal uitvoeren per uur0 * * * *



;


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

De uit te voeren taak


Zoals u in het voorbeeld zag, moet het pad naar php worden meegegeven in het commando.


Om een .php bestand uit te voeren kan u het volgende pad gebruiken:

 /usr/local/bin/php


Deze verwijst standaard naar een actuele, gangbare PHP versie. Momenteel is dit PHP 7.1

Wenst u gebruik te maken van een specifieke versie van php, kan u dit ook aangeven:

/usr/bin/php56
/usr/bin/php71
/usr/bin/php72
/usr/bin/php73



;


Om een .sh bestand uit te voeren kan u het volgende pad gebruiken:

/usr/bin/bash


Nadat u de juiste module aanroept, moet u het gewenste script dat u wil uitvoeren aanroepen. Het is belangrijk dat u hier het volledige absolute pad gebruikt naar het script, dus bijvoorbeeld:

/srv/home/voorbeelddomeinxyz/domains/voorbeelddomein.xyz/htdocs/www/cronjob-script.php

De complete cronjob


Indien ik een cronjob in wil stellen om iedere dag van de week om 09:00 het bestand 'cronjob-script.php' uit te voeren welke in de 'www' folder van mijn hostingpakket staat, geef ik de volgende cronjob in:

0 9 * * *  /usr/local/bin/php /srv/home/voorbeelddomeinxyz/domains/voorbeelddomein.xyz/htdocs/www/cronjob-script.php

De cronjob instellen


U kan een cronjob instellen door via SSH in te loggen op uw hostingpakket. Een kort stappenplan hiervoor vindt u op deze pagina.


Wanneer u een SSH verbinding heeft met uw hostingpakket, kan u de reeds ingestelde cronjobs bezien via het volgende commando:

crontab -l


Indien er geen cronjobs ingesteld staan, geeft dit commando geen output.


Om een cronjob in te kunnen stellen, zorgen we er eerst voor dat het programma dat gebruikt wordt om de cronjob in te geven, is ingesteld op Nano.


Standaard wordt de editor VIM gebruikt. Hoewel dit een prima editor is, leert de ervaring ons dat gebruik ervan door de meeste mensen als iets lastiger wordt ervaren.


Geef het onderstaande commando in om Nano als standaard editor in te stellen:

export VISUAL='nano'


Vervolgens gebruikt u het volgende commando om de cronjob te openen zodat u deze kan aanpassen:

crontab -e


Er zal een venster openen, waarin u de cronjob kan plakken:


[caption id='attachment_1931' align='alignnone' width='900']

De crontab editor met een (fictieve) cronjob[/caption]


Wanneer u alle cronjobs heeft ingegeven, of alle wijzigingen heeft doorgevoerd zoals u deze wenst, kan u het bestand opslaan.


Dit doet u door de toetsencombinatie 'CTRL + X' in te geven.


Onderaan uw scherm krijgt u de vraag 'Save modified buffer (ANSWERING 'No' WILL DESTROY CHANGES) ?'.


U tikt nu op de letter 'y' op uw toestenbord om aan te geven dat u de wijzigingen op wil slaan, en tikt vervolgens om enter om het bestand op te slaan met de huidige naam.





Als alles goed is gegaan, bent u terug waar u begon, en ziet u de melding 'crontab: installing a new crontab' staan:





De cronjob is hiermee succesvol ingesteld, en zal op de opgegeven tijdstippen voor u worden uitgevoerd.



;