Cronjobs instellen: automatische taken op je server
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:
- Voeg de volgende regel toe aan
wp-config.php: - Maak een crontab entry aan:
define('DISABLE_WP_CRON', true);
*/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
- SSH verbinden vanuit Windows (PuTTY)
- Composer gebruiken via SSH
- Server resources monitoren
- Server backup strategie
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.
0 van 0 vonden dit nuttig