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 je 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 je in het voorbeeld zag, moet het pad naar php worden meegegeven in het commando.
Om een .php bestand uit te voeren kan je het volgende pad gebruiken:
/usr/local/bin/php
Deze verwijst standaard naar een actuele, gangbare PHP versie. Momenteel is dit PHP 7.1
Wens je gebruik te maken van een specifieke versie van php, kan je dit ook aangeven:
/usr/bin/php56
/usr/bin/php71
/usr/bin/php72
/usr/bin/php73
;
Om een .sh bestand uit te voeren kan je het volgende pad gebruiken:
/usr/bin/bash
Nadat je de juiste module aanroept, moet je het gewenste script dat je wil uitvoeren aanroepen. Het is belangrijk dat je 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 je een cronjob in wilt 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 je de volgende cronjob in:
0 9 * * * /usr/local/bin/php /srv/home/voorbeelddomeinxyz/domains/voorbeelddomein.xyz/htdocs/www/cronjob-script.php
De cronjob instellen
Je kan een cronjob instellen door via SSH in te loggen op je hostingpakket. Een kort stappenplan hiervoor vind je op deze pagina.
Wanneer je een SSH verbinding hebt met je hostingpakket, kan je 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 je deze kan aanpassen:
crontab -e
Er opent een venster, waarin je de cronjob kan plakken:
Wanneer je alle cronjobs hebt ingegeven, of alle wijzigingen hebt doorgevoerd zoals je deze wenst, kan je het bestand opslaan.
Dit doe je door de toetsencombinatie 'CTRL + X' in te geven.
Onderaan je scherm krijg je de vraag 'Save modified buffer (ANSWERING 'No' WILL DESTROY CHANGES) ?'.
Je tikt nu op de letter 'y' op je toestenbord om aan te geven dat je de wijzigingen op wilt slaan, en tikt vervolgens om enter om het bestand op te slaan met de huidige naam.
Als alles goed is gegaan, ben je terug waar je begon, en zie je de melding 'crontab: installing a new crontab' staan:
De cronjob is hiermee succesvol ingesteld, en zal op de opgegeven tijdstippen voor je worden uitgevoerd.
Was dit artikel nuttig?
Dat is fantastisch!
Hartelijk dank voor uw beoordeling
Sorry dat we u niet konden helpen
Hartelijk dank voor uw beoordeling
Feedback verzonden
We stellen uw moeite op prijs en zullen proberen het artikel te verbeteren