Cronjobs zijn geplande taken die automatisch worden uitgevoerd op vaste tijdstippen op je Linux VPS. Ze zijn onmisbaar voor het automatiseren van backups, herstarts, opruimscripts en andere terugkerende taken.
Hoe werkt cron?
De cron-daemon draait continu op de achtergrond en voert taken uit op basis van een schema dat je vastlegt in een crontab-bestand. Elke gebruiker op het systeem kan een eigen crontab hebben.
Crontab openen en bewerken
Open je crontab met:
crontab -e
De eerste keer vraagt het systeem welke editor je wilt gebruiken. Kies nano als je niet gewend bent aan vim.
De cron-syntaxis
Elke regel in de crontab heeft vijf tijdvelden gevolgd door het commando:
minuut uur dag maand weekdag commando
Enkele voorbeelden:
0 3 * * * /root/backup.shvoert het backupscript elke nacht om 03:00 uit.*/15 * * * * /root/check-server.shdraait elke 15 minuten.0 6 * * 1 apt update && apt upgrade -ydraait elke maandag om 06:00.0 */4 * * * systemctl restart minecraftherstart de server elke 4 uur.
Een asterisk (*) betekent "elk". Een schuine streep (/) geeft een interval aan.
Praktische voorbeelden
Dagelijkse backup:
0 4 * * * tar -czf /root/backups/server-$(date +\%Y\%m\%d).tar.gz /home/minecraft/server/world
Server herstarten om 06:00:
0 6 * * * systemctl restart minecraft
Oude logbestanden opruimen:
0 2 * * 0 find /var/log -name "*.gz" -mtime +30 -delete
Uitvoer en fouten
Standaard stuurt cron de uitvoer van taken naar de e-mail van de systeemgebruiker. Op een VPS zonder mailserver is het handiger om uitvoer naar een logbestand te schrijven:
0 3 * * * /root/backup.sh >> /var/log/backup.log 2>&1
Met 2>&1 worden zowel normale uitvoer als foutmeldingen naar hetzelfde bestand geschreven.
Veelgemaakte fouten
- Verkeerde paden: cron draait met een beperkte omgeving. Gebruik altijd absolute paden, zowel voor commando's als voor bestanden.
- Rechten vergeten: zorg dat je script uitvoerbaar is met
chmod +x script.sh. - Omgevingsvariabelen: variabelen uit je shell-profiel zijn niet beschikbaar in cron. Definieer ze bovenaan je crontab of in het script zelf.
Een krachtige VPS voor al je geautomatiseerde taken? Bekijk onze VPS hosting pakketten.
Hoe controleer ik of mijn cronjob werkt?
Bekijk het syslog met grep CRON /var/log/syslog. Hier zie je wanneer cron een taak heeft gestart. Controleer ook je eigen logbestanden als je uitvoer omleidt.
Kan ik cronjobs instellen als niet-root gebruiker?
Ja. Elke gebruiker kan crontab -e uitvoeren en eigen taken inplannen. Die taken draaien onder de rechten van die gebruiker. Voor systeembrede taken gebruik je /etc/crontab of bestanden in /etc/cron.d/.
Wat als mijn server in een andere tijdzone staat?
Cron gebruikt de systeemtijdzone. Controleer deze met timedatectl. Wil je de tijdzone wijzigen, gebruik dan timedatectl set-timezone Europe/Amsterdam.