
Wat is een cron job in Linux? Uitleg, voorbeelden en tips
Je Linux-server doet nooit wat jij niet vraagt—tenzij je cron inzet. Met deze tijdgebaseerde planner automatiseer je al decennialang terugkerende taken zonder dat je er verder omkijkt.
Introductiejaar: 1979 (Unix V7) ·
Meest gebruikte scheduler: Linux/Unix systemen ·
Standaard taken: back-ups, logrotatie, monitoring
Overzicht
- Exacte implementatiedatum in Unix V7 is niet gedocumenteerd.
- Wie de term ‘cron job’ heeft gemunt is onbekend.
- 1979: eerste cron in Unix V7 door Ken Thompson.
- 1993: Vixie cron wordt Linux-standaard.
- Migratie naar systemd timers op moderne distributies.
- Container-native scheduling met Kubernetes CronJob.
Deze tabel vat de kerngegevens van een cron job samen.
| Eigenschap | Waarde |
|---|---|
| Ontwerper | Ken Thompson (AT&T Bell Labs) |
| Eerste verschijning | Unix V7 (1979) |
| Configuratiebestand | /etc/crontab (systeem) of gebruikers-crontab via `crontab -e` |
| Daemon | crond (meestal) of cronie |
| Standaard editor | vi (instelbaar via EDITOR-omgevingsvariabele) |
Waarvoor worden cron jobs gebruikt?
Wat is een cron job in eenvoudige woorden?
Een cron job is een geplande taak die op vaste tijden, datums of intervallen automatisch wordt uitgevoerd op Unix- en Linux-systemen TransIP (Nederlandse hostingprovider). Denk aan een wekker die telkens hetzelfde script start – zonder dat iemand eraan hoeft te denken.
Wat zijn cron jobs?
Meestal zet je cron in voor:
- back-ups van databases of bestanden Kinamo (hostingprovider);
- logrotatie om schijfruimte vrij te houden;
- monitoring van services en het versturen van alerts.
Het patroon: elke terugkerende handeling die je niet handmatig wilt uitvoeren, kun je aan cron overlaten. De implicatie: een goed ingerichte crontab bespaart uren beheertijd per maand.
Hoe werkt een cron job in Linux?
Wat doet de crontab in Linux?
Crontab staat voor cron table en is het configuratiebestand waarin cronjobs worden vastgelegd. De daemon crond leest elke minuut de crontab en voert commando’s uit waarvan de tijdstipvelden overeenkomen met de huidige tijd.
Hoe stel je een crontab in?
Volg deze stappen om je eerste cron job te maken:
- Open de crontab van de huidige gebruiker met
crontab -e. - Voeg een regel toe met vijf tijdvelden gevolgd door het commando.
- De volgorde is: minuut, uur, dag van de maand, maand, dag van de week.
- Gebruik
crontab -lom je actieve taken te bekijken. - Verwijder de hele crontab met
crontab -r– wees voorzichtig, dit is onomkeerbaar.
Gebruik sudo crontab -u www-data -e om de crontab van een andere gebruiker te bewerken. Vergeet omgevingsvariabelen niet: cron draait met een minimale PATH, specificeer dus volledige paden naar commando’s.
Het patroon: een crontab beheren vereist aandacht voor omgevingsvariabelen en paden – een kleine fout kan de hele taak laten mislukken.
Wat zijn enkele voorbeelden van cron job commando’s?
Wat is een voorbeeld van een cron job in Linux?
Een typisch voorbeeld: 0 2 * * * /usr/bin/backup.sh voert dagelijks om 02:00 een backup-script uit. De syntaxis leest als “op minuut 0, uur 2, elke dag, elke maand, elke weekdag”. Voor elke vijf minuten monitoring gebruik je */5 * * * * /usr/bin/check_status.
Een verkeerd pad of ontbrekende omgevingsvariabele stopt een cron job geruisloos. Je script draait wel, maar doet niets. Daarom: test elk commando eerst handmatig en log de uitvoer altijd naar een bestand.
De implicatie: testen en loggen zijn essentieel om cron taken betrouwbaar te houden.
Hoe maak je een cron job die elke dag draait?
Voeg een regel toe in je crontab met de tijdvelden voor 00:00 (middernacht): 0 0 * * * /usr/local/bin/dagelijkse_taak. Je kunt ook de system-wide directories gebruiken: plaats een script in /etc/cron.daily/ en het wordt eenmaal per dag uitgevoerd.
Waarom heet het een cron job?
De naam ‘cron’ is afgeleid van het Griekse ‘chronos’, wat tijd betekent. De eerste implementatie verscheen in 1979 in Unix V7 van AT&T Bell Labs. Vixie cron, geschreven door Paul Vixie, werd in 1993 de standaard op Linux en is dat nog grotendeels.
Wat is een CronJob in Kubernetes?
Hoe verschilt een Kubernetes CronJob van een Linux cron job?
Een Kubernetes CronJob gebruikt dezelfde cron-syntaxis maar draait taken in containers op een cluster. Waar een Linux cron job direct op het OS draait, biedt de Kubernetes-variant schaalbaarheid, concurrency-beleid en ingebouwd geschiedenisbeheer. De onderstaande tabel maakt de verschillen duidelijk.
Vijf aspecten, één patroon: Kubernetes CronJob voegt container-isolatie en clusterbeheer toe, terwijl de klassieke cron eenvoudiger en lichter blijft.
| Aspect | Linux cron job | Kubernetes CronJob |
|---|---|---|
| Uitvoeringsomgeving | Direct op het OS | In een container (pod) |
| Schaalbaarheid | Enkel op één machine | Over cluster, meerdere replicas |
| Concurrency-beleid | Niet ingebouwd (overschrijven mogelijk) | Configuratie: Allow, Forbid, Replace |
| Geschiedenisbeheer | Geen, zelf loggen | Automatisch: successfulJobsHistoryLimit, failedJobsHistoryLimit |
| Afhankelijkheden | Alleen shell en scripts | Beeld (image) in registry, RBAC, persistent volumes |
De afweging: kies Linux cron voor eenvoud en lage overhead; kies Kubernetes CronJob als je al in een cluster werkt en behoefte hebt aan schaalbaarheid en herstartmechanismen.
Tijdlijn van cron
Cron kent een rijke geschiedenis die teruggaat tot de begindagen van Unix. Deze gebeurtenissen markeren de belangrijkste stappen:
- 1979 – Eerste implementatie van cron in Unix V7 door Ken Thompson.
- Jaren 80 – BSD ontwikkelt eigen variant met extra functies.
- 1993 – Vixie cron wordt de standaard op Linux-systemen.
- 2000-2010 – Opkomst van systemd timers als alternatief op veel distributies.
- 2014 – Kubernetes introduceert CronJob voor geplande taken in containers.
Wat dit betekent: cron is geëvolueerd van een eenvoudige Unix-tool naar een systeem dat nog steeds relevant is in cloud-native omgevingen.
Bevestigde feiten en onduidelijkheden
Bevestigde feiten
Wat onduidelijk is
- De exacte datum van de eerste implementatie in Unix V7 is niet in primaire bronnen vastgelegd.
- Wie precies de term ‘cron job’ heeft gemunt, is niet bekend.
- Maandnamen (JAN–DEC) en weekdagen (SUN–SAT) worden geaccepteerd – bron onzeker.
De combinatie van bevestigde en onduidelijke punten geeft een genuanceerd beeld van cron’s geschiedenis en gebruik.
Citaten uit officiële bronnen
“Cron is a daemon that executes scheduled commands.”
— Cron man-pagina (Linux), officiële documentatie
“The crontab format is defined by the POSIX standard IEEE Std 1003.1-2008.”
— IEEE 1003.1-2008, POSIX-standaard
Deze citaten onderstrepen de officiële status van cron en crontab in Unix-achtige systemen.
Samenvatting
Cron blijft de ruggengraat van taakautomatisering op Linux, simpel en eeuwenoud. Voor de systeembeheerder in een klein bedrijf is de klassieke cron nog altijd de beste keuze: gratis, stabiel en overal aanwezig. Voor teams die in Kubernetes werken, biedt de CronJob-controller extra veiligheid en schaalbaarheid. De afweging is helder: eenvoud versus cloud-native mogelijkheden. Kies wat past bij jouw omgeving, maar onderschat nooit de kracht van een goed geconfigureerde crontab.
Gerelateerde lectuur: 5.10 feet in cm: Exacte Conversie en Hoogte Gids · Moet ik vakantiedagen opnemen tijdens ziekte? Regels 2024
blog.desdelinux.net, serverspace.io, youstable.com, prehost.com, tweaking4all.nl
Veelgestelde vragen
Kan ik een cron job elke minuut laten draaien?
Ja, gebruik * * * * * /commando. Of */1 * * * * voor extra duidelijkheid. Houd er rekening mee dat cron elke minuut checkt, dus de taak wordt exact elke minuut gestart.
Hoe verwijder ik een cron job?
Gebruik crontab -e om de regel te verwijderen, of crontab -r om alles in één keer te wissen.
Wat is het verschil tussen cron en systemd timers?
systemd timers bieden meer flexibiliteit (afhankelijkheden, monotone timers) en zijn dieper geïntegreerd in moderne Linux-distributies. Cron is echter eenvoudiger en universeel beschikbaar, ook op oudere systemen.
Hoe bekijk ik de logs van cron jobs?
Logs vind je meestal in /var/log/cron of via journalctl -u cronie. Je kunt ook zelf logging toevoegen door > /var/log/mijnjob.log 2>&1 aan het commando toe te voegen.
Kunnen cron jobs omgevingsvariabelen gebruiken?
Ja, maar cron laadt geen volledige shell-omgeving. Definieer variabelen bovenaan je crontab of specificeer ze in het commando zelf.
Wat is de maximale frequentie voor een cron job?
Theoretisch elke minuut, maar cron is niet ontworpen voor subminuut-intervallen. Gebruik voor frequentere taken een andere scheduler zoals systemd timers of een daemon.