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:
[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.
;
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