Kennisbank › Geplande Taken › cron (geplande taken)
geplande taken starter 29 August 2026

cron (geplande taken)

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.sh

Dit 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.

← Terug naar kennisbank
← Terug naar kennisbank