Cron (crontab): UNIX/Linux taakplanner voor geautomatiseerde cronjobs
Leer cron & crontab: plan en automatiseer UNIX/Linux-taken, repeterende jobs, onderhoud en downloads. Praktische tips voor cronjobs, timing en betrouwbaar taakbeheer.
Cron is een computerprogramma dat kan worden gebruikt om een computer op bepaalde tijdstippen taken te laten uitvoeren. Het wordt gebruikt in UNIX computerbesturingssystemen en besturingssystemen die lijken op UNIX, zoals Linux.
Cron kan gebruikt worden om de meeste repeterende taken in te plannen. Het wordt vaak gebruikt om taken te automatiseren die te maken hebben met het onderhoud of beheer van een computer of computernetwerk, hoewel het ook gebruikt kan worden voor vele andere taken zoals het downloaden van bestanden van Internet en het downloaden van e-mail op specifieke tijden of data.
De naam van het computerprogramma cron komt van het woord cron, dat komt van het Griekse woord voor tijd, χρόνος (chronos).
Cron wordt ingesteld door een bestand genaamd crontab (cron table) te bewerken. Dit bestand somt de specifieke taken op die de computer moet uitvoeren en wanneer de taken moeten worden uitgevoerd.
Hoe een crontab-regel is opgebouwd
Een reguliere crontab-regel heeft vijf tijdvelden gevolgd door het commando dat uitgevoerd moet worden:
minuut uur dag-van-de-maand maand dag-van-de-week command
Voorbeeld:
30 2 * * 1-5 /usr/bin/backup.sh — voert /usr/bin/backup.sh elke werkdag om 02:30 uur uit.
Uitleg van de velden:
- minuut: 0–59
- uur: 0–23
- dag-van-de-maand: 1–31
- maand: 1–12 (of jan–dec)
- dag-van-de-week: 0–7 (zowel 0 als 7 = zondag, of sun–sat)
Je kunt ranges gebruiken (bijv. 1-5), lijsten (bijv. 1,3,5) en stapwaarden (bijv. */15 voor elke 15e minuut). Een ster (*) betekent "elke".
Speciale strings en systeemeigen crontab-bestanden
Cron ondersteunt ook enkele handige speciale strings als vervanging voor de vijf velden:
- @reboot — voer bij systeemstart uit
- @yearly of @annually — jaarlijks
- @monthly, @weekly, @daily, @hourly
Op veel systemen bestaan er meerdere locaties voor crontab-bestanden:
- /etc/crontab — systeemcrontab (deze bevat een extra veld waarin de gebruiker wordt aangegeven die het commando uitvoert)
- /etc/cron.d/ — directory met crontab-achtige bestanden voor systeem- of pakketjobs
- /var/spool/cron/crontabs/ of /var/spool/cron/ — per-gebruiker crontabs
Hoe bewerk je de crontab
- crontab -e — bewerk je persoonlijke crontab met de standaardeditor
- crontab -l — toon je huidige crontab
- crontab -r — verwijder je crontab
- System administrators gebruiken vaak sudo crontab -e om de root-crontab te bewerken, of bewerken /etc/crontab rechtstreeks.
Omgevingsvariabelen, pad en uitvoer
Cron-omgevingen zijn minimaal: vaak is bijvoorbeeld PATH anders dan in een interactieve shell. Geef absolute paden in commando's en scripts (bijv. /usr/bin/python), of stel expliciet variabelen bovenin de crontab:
- PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
- SHELL=/bin/bash
Standaard stuurt cron de uitvoer (stdout en stderr) als e-mail naar de eigenaar van de crontab. Je kunt uitvoer omleiden naar een bestand of /dev/null, bijvoorbeeld:
0 3 * * * /usr/local/bin/daily-job.sh >> /var/log/daily-job.log 2>&1
Logging, daemon en alternatieven
- De cron-daemon heet meestal cron of crond. Controleer de servicestatus met systemctl (bijv. systemctl status cron).
- Logs vind je vaak in /var/log/cron, /var/log/syslog of via journalctl (journalctl -u cron).
- Als een machine niet altijd aanstaat (bijv. laptops), gebruik dan anacron om gemiste jobs later uit te voeren.
- Op moderne Linux-systemen kun je in plaats van cron ook systemd timers gebruiken voor fijnmazige time-based taken en betere logging.
Praktische voorbeelden
- */15 * * * * /usr/bin/php /var/www/html/script.php — elk kwartier
- 0 0 1 * * /usr/local/bin/monthly-maintenance.sh — eerste dag van elke maand om middernacht
- @reboot /usr/bin/screen -dmS backup /usr/local/bin/start-backup.sh — start bij herstart
Veelvoorkomende problemen en tips voor troubleshooting
- Zorg dat scripts uitvoerbaar zijn (chmod +x) en dat de shebang (bijv. #!/bin/bash) klopt.
- Gebruik absolute paden voor bestanden en binaries.
- Controleer logs en mail van de gebruiker voor foutmeldingen.
- Test het commando eerst handmatig in een shell voordat je het in crontab zet.
- Als een job niet draait: controleer of de cron-service actief is, of de crontab opgeslagen is, en de tijdzone/klok van het systeem.
Beveiliging en best practices
- Beperk welke gebruikers cron-jobs mogen aanmaken via /etc/cron.allow en /etc/cron.deny.
- Wees voorzichtig met taken die als root draaien; controleer scripts op invoervalidatie en paden.
- Log belangrijke uitvoer en draai periodieke taken op momenten met lage belasting.
- Documenteer geplande taken en wees terughoudend met jobs die veel resources gebruiken of overlappen.
Met bovenstaande basiskennis kun je vrijwel alle reguliere automatische taken op UNIX- en Linux-systemen plannen en betrouwbaar laten uitvoeren. Cron is krachtig en simpel, maar aandacht voor paden, omgevingen en logging voorkomt veel problemen.
Vragen en antwoorden
V: Wat is Cron?
A: Cron is een computerprogramma dat gebruikt wordt om taken te plannen op specifieke tijdsintervallen.
V: Waar wordt Cron gebruikt?
A: Cron wordt gebruikt in UNIX computerbesturingssystemen en besturingssystemen die lijken op UNIX, zoals Linux.
V: Wat voor soort taken kunnen gepland worden met Cron?
A: De meeste repetitieve taken kunnen gepland worden met Cron. Het wordt vaak gebruikt om taken te automatiseren die gerelateerd zijn aan het onderhoud of beheer van een computer of computernetwerk, hoewel het ook voor veel andere taken gebruikt kan worden, zoals het downloaden van bestanden van het internet en het downloaden van e-mail op specifieke tijden of data.
V: Waar komt de naam Cron vandaan?
A: De naam van het computerprogramma Cron komt van het woord cron, wat van het Griekse woord voor tijd is, χρόνος (chronos).
V: Hoe wordt Cron ingesteld?
A: Cron wordt ingesteld door een bestand genaamd crontab (cron tabel) te bewerken. In dit bestand staan de specifieke taken die de computer moet uitvoeren en wanneer de taken moeten worden uitgevoerd.
V: Wat is een crontab?
A: Een crontab is een bestand dat de specifieke taken opsomt die de computer moet uitvoeren en wanneer de taken moeten worden uitgevoerd.
V: Voor welk soort repetitieve taken kan Cron gebruikt worden?
A: De meeste terugkerende taken met betrekking tot het onderhoud of beheer van een computer of computernetwerk kunnen geautomatiseerd worden met Cron. Het kan ook gebruikt worden voor vele andere taken zoals het downloaden van bestanden van het internet en het downloaden van e-mail op specifieke tijden of data.
Zoek in de encyclopedie