Cronjobs efficiënt inplannen
(Automatiseer taken op je server zonder prestatieproblemen)
Cron is de taakplanner van Linux. Je kunt er scripts of commando's mee inplannen om op specifieke tijden uit te voeren, zoals dagelijkse backups of wekelijkse opruimacties.
1. De Crontab bewerken
-
Elke gebruiker heeft zijn eigen crontab. Voor systeemtaken wordt vaak de crontab van de root-gebruiker gebruikt.
-
Open de crontab voor de huidige gebruiker:
crontab -e -
Open de crontab voor de root-gebruiker:
sudo crontab -e
2. De Cron-syntax
-
Een cronjob-regel heeft vijf tijd- en datumvelden, gevolgd door het commando dat moet worden uitgevoerd.
-
┌───────────── minuut (0 - 59)
│ ┌───────────── uur (0 - 23)
│ │ ┌───────────── dag van de maand (1 - 31)
│ │ │ ┌───────────── maand (1 - 12)
│ │ │ │ ┌───────────── dag van de week (0 - 6) (Zondag=0 of 7)
│ │ │ │ │
* * * * * /pad/naar/commando -
Een
*betekent "elke".* * * * *betekent dus "elke minuut".
3. Voorbeelden
-
Elke nacht om 03:30 een backup-script uitvoeren:
30 3 * * * /usr/local/bin/backup.sh -
Elke maandag om 05:00 het systeem updaten:
0 5 * * 1 sudo apt update && sudo apt upgrade -y -
Elke 15 minuten een specifieke taak uitvoeren:
*/15 * * * * /pad/naar/script.php
4. Efficiëntie en prestaties
-
Spreid de belasting: Plan zware taken niet allemaal op hetzelfde moment (zoals middernacht). Kies bijvoorbeeld
17 4 * * *om piekbelasting te vermijden. -
Voorkom output: Cron stuurt standaard e-mails met output. Onderdruk dit met:
* * * * * /pad/naar/commando >/dev/null 2>&1 -
Gebruik nice en ionice: Geef zware taken een lagere prioriteit:
30 3 * * * nice -n 19 ionice -c 3 /usr/local/bin/backup.sh -
nice -n 19: Laagste CPU-prioriteitionice -c 3: Laagste schijf-I/O prioriteit (idle)
Samenvatting
-
Gebruik crontab -e om taken in te plannen
-
Let op de juiste tijdsnotatie en gebruik absolute paden
-
Voorkom overbelasting door taken te spreiden en prioriteit te verlagen
✅ Tip: Controleer of je cronjobs goed draaien via /var/log/syslog of /var/log/cron met:grep CRON /var/log/syslog
Hulp nodig? Lijkt een cronjob niet te werken? Controleer of je absolute paden gebruikt (zoals /usr/bin/php in plaats van alleen php). Cron gebruikt een beperkte PATH-variabele.
