# Cronjobs plannen op je server

> Voer commando's op vaste tijden uit met cron. Kies een frequentie of eigen cron-expressie en de gebruiker, start een taak direct en lees het logboek.

De pagina **Planner** van een server beheert de geplande taken: commando's die cron op vaste momenten uitvoert, zoals elke minuut, elke nacht of op de eerste van de maand. Gebruik hem voor de Laravel scheduler, voor opruimscripts, voor rapporten of voor alles wat volgens een schema moet draaien en daarna stopt.

Elke taak wordt naar een eigen bestand in `/etc/cron.d` op de server geschreven, zodat taken los van elkaar kunnen worden toegevoegd en verwijderd zonder aan iemands crontab te komen. Schema's volgen de tijdzone van de server, die bovenaan de pagina staat en die je kunt wijzigen in de [serverinstellingen](https://ops.vimonto.com/docs/nl/servers/server-settings).

![De pagina Planner met de standaardtaken en een Laravel-schedulertaak die elke minuut draait](https://ops.vimonto.com/docs-media/nl/server-scheduler.webp?v=161e760d "Geplande taken op een server")

## Een taak plannen

1. Open de server en kies **Planner** in de zijbalk.
2. Klik op **Taak plannen**.
3. Vul het **Commando** in, bijvoorbeeld `php /home/vimonto/example.com/current/artisan schedule:run`.
4. Vul eventueel een **Naam** in, om de taak in de lijst te herkennen.
5. Kies onder **Uitvoeren als** wie hem uitvoert: de systeemgebruiker (standaard `vimonto`) of `root`.
6. Kies **Wanneer** hij draait (zie hieronder).
7. Klik op **Taak plannen**.

De taak staat op **Wordt toegevoegd** tot het cronbestand is geschreven, en draait daarna op het volgende geplande moment.

Het commando draait via bash, dus pipes, `&&` en variabelen werken zoals je ze typt. De speciale tekens van cron zelf, zoals `%`, hoef je niet te escapen.

## Welke frequenties kun je kiezen?

| Frequentie | Cron-expressie | Draait |
| --- | --- | --- |
| **Elke minuut** | `* * * * *` | Elke minuut. |
| **Elk uur** | `0 * * * *` | Aan het begin van elk uur. |
| **Elke nacht** | `0 0 * * *` | Elke dag om middernacht. |
| **Elke week** | `0 0 * * 0` | Elke zondag om middernacht. |
| **Elke maand** | `0 0 1 * *` | Op de eerste van elke maand om middernacht. |
| **Bij opstarten** | `@reboot` | Eén keer, elke keer dat de server opstart. |
| **Eigen schema** | je eigen | Wat je invult onder **Schema**. |

### Een eigen cron-expressie schrijven

Kies **Eigen schema** en vul onder **Schema** vijf velden in: minuut, uur, dag van de maand, maand en dag van de week. Elk veld accepteert `*`, een getal, een bereik (`1-5`), een stap (`*/15`) en lijsten gescheiden door komma's.

| Expressie | Draait |
| --- | --- |
| `*/15 * * * *` | Elke 15 minuten. |
| `30 3 * * *` | Elke nacht om 3:30. |
| `0 9 * * 1-5` | Om 9:00 op werkdagen. |
| `0 */6 * * *` | Elke zes uur. |
| `0 2 1,15 * *` | Om 2:00 op de 1e en de 15e van de maand. |

Namen zoals `MON` of `JAN` en snelkoppelingen zoals `@daily` worden niet geaccepteerd in een eigen schema; gebruik in plaats daarvan getallen.

## De Laravel scheduler draaien

De scheduler van Laravel heeft één cronjob nodig die elke minuut `schedule:run` uitvoert. De makkelijkste manier is de scheduler voor de site aan te zetten op de pagina [queues en scheduler](https://ops.vimonto.com/docs/nl/sites/queues-and-scheduler): Vimonto Deploy maakt de taak dan voor je aan, met het juiste pad en de juiste gebruiker, en hij verschijnt in deze lijst.

Wil je hem liever met de hand toevoegen, plan dan dit commando **Elke minuut** als de systeemgebruiker:

```bash
php /home/vimonto/example.com/current/artisan schedule:run
```

Gebruik de map `current` van de site, zodat de taak altijd de code draait die live staat. Een taak die de site zo aanmaakt, is gemarkeerd met **Via Planner**; zie [Taken van sitefuncties](#taken-van-sitefuncties).

## Een taak nu uitvoeren

Open het actiemenu (**⋯**) van een taak en kies **Nu uitvoeren**. Het commando draait meteen als de gebruiker van de taak, vanuit de homemap van die gebruiker. De uitvoer verschijnt in de taak op de pagina [activiteit](https://ops.vimonto.com/docs/nl/organization/activity), en dat maakt dit de makkelijkste manier om een nieuwe taak te testen.

## Het logboek lezen

Klik op **Logboek** naast een taak om de laatste 300 regels te zien die de geplande runs hebben geschreven (standaarduitvoer en fouten samen), opgehaald van de server op het moment dat je klikt. Elke run voegt zijn uitvoer toe aan `/var/log/vimonto/cron-{id}.log`, onder een regel met de datum en tijd waarop hij begon, zoals `--- 2026-10-07T03:30:00+02:00`. Schrijft een taak niets, dan staat alleen die regel er, zodat je toch ziet dat hij gedraaid heeft.

Eén keer per dag wordt een logboek dat groter is dan 5 MB opzijgezet: één ouder bestand blijft bewaard en alles wat ouder is wordt verwijderd, zodat een spraakzame taak de schijf niet kan vullen. Het logboek wordt verwijderd wanneer je de taak verwijdert. De uitvoer van **Nu uitvoeren** komt niet in het logboek; die staat in de taak op de pagina activiteit.


## Wat zijn de standaardtaken?

Elke server wordt ingericht met twee taken, gemarkeerd als **Standaard**:

| Taak | Wanneer | Wat het doet |
| --- | --- | --- |
| Composer bijwerken | **Elke nacht** | Werkt Composer bij naar de nieuwste versie. |
| Ongebruikte pakketten opruimen | **Elke week** | Verwijdert pakketten en gecachete pakketbestanden die de server niet meer nodig heeft. |

Beide draaien als `root`. Je kunt ze bewerken, uitvoeren of verwijderen zoals elke andere taak.

## Een taak bewerken of verwijderen

Open het actiemenu (**⋯**) en kies **Bewerken** om het commando, de naam, de gebruiker of het schema te wijzigen; **Opslaan** herschrijft het cronbestand. Kies **Verwijderen** om de taak te wissen; hij draait dan niet meer.

Mislukt het schrijven van een taak, dan toont hij **Mislukt**; kies **Opnieuw proberen** in het actiemenu.

### Taken van sitefuncties

Taken die een [sitefunctie](https://ops.vimonto.com/docs/nl/sites/site-features) heeft aangemaakt, zoals de Laravel scheduler of **Echte cron** voor WordPress, hebben een badge **Via …**, bijvoorbeeld **Via Planner**. Je kunt hier hun **Logboek** lezen en ze **Nu uitvoeren**, maar **Bewerken**, **Opnieuw proberen** en **Verwijderen** worden niet aangeboden: wijzig ze via de functie in de siteheader, en zet de functie uit om de taak te verwijderen.

## Weten wanneer een geplande taak niet meer draait

Cron laat je niet weten wanneer een taak mislukt of niet meer draait. Gebruik daar een heartbeat voor: klik op **Heartbeat toevoegen** op de pagina [monitoring](https://ops.vimonto.com/docs/nl/servers/monitoring) en laat de taak de URL van de heartbeat aanroepen als hij klaar is, bijvoorbeeld door het commando te eindigen met `&& curl -fsS https://…` (de URL die bij de heartbeat staat). Komt de ping niet binnen het interval en de marge die je instelt, dan mailt Vimonto Deploy het adres onder **Melding naar** en krijgen de leden van de organisatie een melding, met één e-mail per persoon; zie [wie een melding krijgt](https://ops.vimonto.com/docs/nl/servers/monitoring#wie-krijgt-een-melding).

## Veelgestelde vragen

### In welke tijdzone draaien taken?

In de tijdzone van de server, die bovenaan de pagina **Planner** staat. Wijzig hem in de [serverinstellingen](https://ops.vimonto.com/docs/nl/servers/server-settings); taken volgen dan de nieuwe tijdzone.

### Waarom draait mijn taak niet?

Open het **Logboek** om te zien wat de laatste geplande runs schreven, of klik op **Nu uitvoeren** en lees de uitvoer op de pagina activiteit. Veelvoorkomende oorzaken zijn een relatief pad (gebruik volledige paden, of ga eerst met `cd` naar de map), een commando dat een andere gebruiker nodig heeft, of een eigen schema dat niet is wat je bedoelde. Cron gebruikt een korte `PATH` (`/usr/local/sbin`, `/usr/local/bin`, `/usr/sbin`, `/usr/bin`, `/sbin` en `/bin`).

### Wat is het verschil tussen een geplande taak en een proces?

Een geplande taak start op vaste momenten en stopt als hij klaar is. Een [proces](https://ops.vimonto.com/docs/nl/servers/processes) draait altijd en wordt door Supervisor herstart wanneer het stopt. Gebruik een proces voor queue workers, en een geplande taak voor taken zoals de Laravel scheduler.

### Kan een taak vaker draaien dan elke minuut?

Nee. Het kleinste interval van cron is één minuut. Gebruik voor werk dat continu moet draaien een [proces](https://ops.vimonto.com/docs/nl/servers/processes).
