Hoe stel ik een cronjob in?

  Sites & Databases

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:

Teken Commando
* Herhalen (minuten, uren, dagen, weken, maanden, jaren)
*/10 Herhalen iedere 10 (minuten, uren, dagen, weken, maanden, jaren)
5 Uitvoeren op de 10e (minuten, uren, dagen, weken, maanden, jaren)
5-10 Uitvoeren op de 10e t/m 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

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:

De crontab editor met een (fictieve) cronjob

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.