Cronjobs zijn geplande taken die automatisch worden uitgevoerd op specifieke tijden. Ze zijn essentieel voor serveronderhoud, backups, en applicatie taken. Bij Theory7 gebruiken we cronjobs voor alles van dagelijkse backups tot minuut-nauwkeurige monitoring. In deze handleiding leer je cronjobs correct instellen en beheren.

Wat zijn cronjobs?

Een cronjob is een Unix taakplanner die commando's of scripts uitvoert op geplande momenten. Dit maakt het mogelijk om routinematige taken te automatiseren, waardoor je tijd bespaart en de kans op menselijke fouten vermindert. Typische toepassingen zijn:

  • Backups - Dagelijks database en bestanden backuppen om gegevensverlies te voorkomen.
  • Onderhoud - Logfiles opschonen en roteren om serverprestaties te optimaliseren.
  • E-mail - Nieuwsbrieven of notificaties versturen naar gebruikers of klanten.
  • Applicaties - Specifieke taken binnen frameworks zoals WordPress of Laravel automatiseren.
  • Monitoring - Health checks uitvoeren om de status van je server of applicaties te controleren.

Crontab bewerken

Elke gebruiker heeft een eigen crontab. Open met:

crontab -e

Dit opent je persoonlijke crontab in de standaard editor. Systembrede cronjobs staan in:

/etc/crontab
/etc/cron.d/

Cron syntax begrijpen

Een cron regel bestaat uit 5 tijdvelden plus het commando:

* * * * * commando
| | | | |
| | | | +-- Dag van de week (0-7, 0 en 7 = zondag)
| | | +---- Maand (1-12)
| | +------ Dag van de maand (1-31)
| +-------- Uur (0-23)
+---------- Minuut (0-59)

Speciale karakters

  • * - Elke waarde
  • , - Meerdere waarden (bijvoorbeeld 1,3,5)
  • - - Bereik (bijvoorbeeld 1-5)
  • / - Stappen (bijvoorbeeld */5 = elke 5 minuten)

Voorbeelden uitgelegd

# Elke dag om 03:00
0 3* * * /pad/naar/script.sh

# Elk uur op het hele uur
0 * * * * /pad/naar/script.sh

# Elke 5 minuten
*/5* * * * /pad/naar/script.sh

# Elke weekdag om 08:30
30 8* * 1-5 /pad/naar/script.sh

# Op de 1e en 15e van elke maand om middernacht
0 0 1,15* * /pad/naar/script.sh

# Elke zondag om 04:00
0 4* * 0 /pad/naar/script.sh

Cronjobs aanmaken

Voorbeeld: Database backup

crontab -e

# Dagelijkse MySQL backup om 03:00
0 3* * * mysqldump -u root -pWACHTWOORD database > /backups/db_$(date +\%Y\%m\%d).sql

Let op: In crontab moet % ge-escaped worden als \% om syntaxfouten te voorkomen.

Voorbeeld: Logfile cleanup

# Wekelijks logs ouder dan 30 dagen verwijderen (zondag 05:00)
0 5 * * 0 find /var/log -name "*.log" -mtime +30 -delete

Voorbeeld: PHP script draaien

# Elke 15 minuten PHP cron script*/15 * * * * /usr/bin/php /var/www/site/cron.php

Gebruik altijd het volledige pad naar de PHP executable om fouten te voorkomen.

Cronjobs voor webapplicaties

WordPress WP-Cron

WordPress heeft een ingebouwd cron systeem dat niet altijd betrouwbaar is bij weinig verkeer. Het is aan te raden om over te schakelen naar echte cronjobs:

  1. Voeg de volgende regel toe aan wp-config.php:
  2. define('DISABLE_WP_CRON', true);
  3. Maak een crontab entry aan:
  4. */5* * * * /usr/bin/php /var/www/wordpress/wp-cron.php

Laravel Scheduler

Laravel heeft een krachtige scheduler die elke minuut moet draaien om geplande taken uit te voeren:

* * * * * cd /var/www/laravel && php artisan schedule:run >> /dev/null 2>&1

Output en logging

Output naar bestand

0 3 * * * /pad/naar/script.sh >> /var/log/mijn-cron.log 2>&1
  • >> - Append naar bestand
  • 2>&1 - Redirect errors naar hetzelfde bestand

Output mailen

Standaard mailt cron de output naar de gebruiker. Om een specifieke e-mail in te stellen:

MAILTO=admin@jouwdomein.nl
0 3* * * /pad/naar/script.sh

Of om alle output te onderdrukken:

0 3 * * * /pad/naar/script.sh > /dev/null 2>&1

Crontab beheren

Alle cronjobs bekijken

crontab -l

Cronjobs van andere gebruiker

sudo crontab -l -u www-data

Crontab verwijderen

crontab -r

Let op: dit verwijdert ALLE cronjobs van die gebruiker, dus wees voorzichtig.

Cron logs bekijken

Controleer of cronjobs draaien door de logs te bekijken:

# Debian/Ubuntu
grep CRON /var/log/syslog

# CentOS/RHEL
tail -f /var/log/cron

Veelvoorkomende fouten

Script werkt handmatig, niet als cron

Environment variables zijn anders in cron. Gebruik altijd volledige paden:

# Fout
0 3* * * script.sh

# Goed
0 3 * * * /usr/local/bin/script.sh

PATH instellen in crontab

Als je afhankelijk bent van bepaalde commando's, stel dan het PATH in:

PATH=/usr/local/bin:/usr/bin:/bin
0 3* * * script.sh

Permissions

Zorg ervoor dat scripts uitvoerbaar zijn:

chmod +x /pad/naar/script.sh

Gerelateerde artikelen

Meer informatie over VPS servers bij Theory7

Hulp nodig?

We staan voor je klaar! Loop je ergens tegenaan of heb je vragen? Ons supportteam helpt je graag persoonlijk verder. Stuur ons een berichtje via het ticketsysteem - we reageren meestal binnen een paar uur en denken graag met je mee.