cron (geplande taken)
systemctl status cron
Op Red Hat- of CentOS-systemen heet de service `crond`:
systemctl status crond
Als cron niet draait, start u de service met:
sudo systemctl start cron
sudo systemctl enable cron
2. Toon uw huidige cron-taken
Het commando `crontab -l` toont de lijst met geplande taken voor de huidige gebruiker.crontab -l
Als er nog geen taken zijn, krijgt u een lege uitvoer of een melding dat er geen crontab is ingesteld.
3. Bewerk uw crontab
Open uw crontab in de standaard editor om taken toe te voegen of te wijzigen.crontab -e
Bij de eerste keer kiest het systeem een editor — meestal `nano` of `vi`. U kunt expliciet een editor kiezen:
EDITOR=nano crontab -e
4. Begrijp het vijf-veld formaat
Elke regel in een crontab heeft vijf tijdvelden gevolgd door het commando. De velden zijn: minuut, uur, dag van de maand, maand, dag van de week.minuut uur dag-van-maand maand dag-van-week commando
Een voorbeeldregel die elke dag om 02:00 uur een script uitvoert:
0 2 <em> </em> * /backup/scripts/daily.sh
De asterisken betekenen "elke" — dus elke dag van de maand, elke maand, elke dag van de week.
5. Voeg een taak toe
Voeg een regel toe aan uw crontab voor de taak die u wilt plannen. Gebruik altijd volledige paden naar commando's en scripts, omdat cron-taken buiten een interactieve shell draaien en `PATH` beperkt is.0 2 <em> </em> * /usr/bin/backup-script.sh > /var/log/backup.log 2>&1
Deze regel voert het script dagelijks om 02:00 uit en schrijft zowel stdout als stderr naar `/var/log/backup.log`. Zonder omleiding stuurt cron de uitvoer per e-mail naar de eigenaar van de crontab — op systemen zonder geconfigureerde mail gaan die berichten verloren.
6. Definieer omgevingsvariabelen indien nodig
Omdat cron-taken geen interactieve shell gebruiken, kunt u variabelen zoals `PATH` expliciet definiëren bovenaan uw crontab.PATH=/usr/local/bin:/usr/bin:/bin
SHELL=/bin/bash
0 2 <em> </em> * /usr/local/bin/backup-script.shDit voorkomt problemen met commando's die niet gevonden worden omdat ze buiten het standaard `PATH` liggen.
7. Gebruik systeemwijd configuratiemappen
Voor systeemwijd beheer kunt u taken plaatsen in `/etc/cron.d/`, `/etc/cron.hourly/`, `/etc/cron.daily/`, `/etc/cron.weekly/` en `/etc/cron.monthly/`. Bestanden in `/etc/cron.d/` gebruiken hetzelfde formaat als een crontab, maar bevatten een gebruikersveld.Maak een bestand aan in `/etc/cron.d/`:
sudo nano /etc/cron.d/backup
Inhoud:
0 2 <em> </em> * root /usr/local/bin/backup-script.sh
Het veld `root` geeft aan welke gebruiker de taak uitvoert. Taken in `/etc/cron.daily/` en vergelijkbare mappen draaien respectievelijk dagelijks, wekelijks en maandelijks — het formaat in die bestanden is anders: daar staat alleen het scriptpad, geen tijdvelden.
8. Verwijder een taak
Verwijder een specifieke regel uit uw crontab met `crontab -e`, of verwijder alle taken voor de huidige gebruiker:crontab -r
Wees voorzichtig: `crontab -r` verwijdert de volledige crontab zonder bevestiging.
Verificatie
Controleer of uw taak correct is opgeslagen:crontab -l
Controleer of de taak daadwerkelijk is uitgevoerd door de logs te bekijken. Op Debian- en Ubuntu-systemen staan cron-logs in `/var/log/syslog`:
grep CRON /var/log/syslog
Op Red Hat- en CentOS-systemen staat cron-logging in `/var/log/cron`:
grep CRON /var/log/cron
Op systemen met systemd kunt u ook de journal raadplegen:
journalctl -u cron
Op Red Hat-systemen:
journalctl -u crond
De logregels bevatten het tijdstip, de gebruikersnaam en het uitgevoerde commando — daarmee ziet u direct of uw taak op het juiste moment is gedraaid.
Veelgestelde problemen
Taak wordt niet uitgevoerd
De meest voorkomende oorzaak is een fout in het tijdformaat of een ontbrekend volledig pad naar het commando. Controleer eerst of het commando handmatig werkt vanuit de shell, en gebruik dan het volledige pad in de crontab. Check daarna de logs met `grep CRON /var/log/syslog` of `journalctl -u cron` om te zien of de taak wordt opgepikt.Uitvoer van taken raakt zoek
Zonder omleiding stuurt cron de uitvoer per e-mail naar de eigenaar van de crontab. Op systemen zonder mailconfiguratie gaat die uitvoer verloren. Leid de uitvoer expliciet om naar een logbestand:0 2 <em> </em> * /usr/local/bin/backup-script.sh >> /var/log/backup.log 2>&1
Omgevingsvariabelen ontbreken
Crontaken draaien zonder de variabelen uit uw interactieve shell. Definieer `PATH`, `SHELL` en andere benodigde variabelen bovenaan uw crontab, of gebruik volledige paden naar alle commando's in uw script.Cron maakt sinds 1975 deel uit van Unix — de oorspronkelijke implementatie van Brian Kernighan in Version 7 Unix las taken uit `/usr/lib/crontab` en controleerde dat bestand elke minuut, en die minuutelijkse controle vormt nog steeds de kern van moderne implementaties. De vroege versie draaide als daemon in multi-user modus en voerde alle taken uit met superuser-rechten — een risico dat moderne systemen ondervangen door taken per gebruiker te laten draaien. Op systemen met systemd bieden timers een modern alternatief, en in containeromgevingen zoals Docker en Kubernetes vervangen orchestrators zoals Kubernetes CronJobs vaak de traditionele cron-daemon. Maar voor wie eenvoudig en betrouwbaar taken wil plannen op een Linux-server, blijft cron het fundament waarop die alternatieven uiteindelijk voortbouwen.