Guides 3 min. leestijd

Voorkom gemiste taken: zorg dat je cronjobs soepel draaien

Backups, imports en opruimtaken draaien via cron, en ze falen zonder dat iemand het merkt. De meest voorkomende oorzaken van gemiste cronjobs, hoe je ze oplost en hoe je een melding krijgt als een job niet draait.

Cronjobs doen het stille werk achter websites en servers: backups, updates, imports, facturen, het opwarmen van caches en opruimtaken. Als ze werken, merkt niemand er iets van. Als ze stoppen, merkt ook niemand iets, tot er een backup ontbreekt of een facturatierun nooit heeft plaatsgevonden.

Waarom cronjobs belangrijk zijn

Met cron plan je commando’s die automatisch op vaste tijden of intervallen draaien. Dat scheelt tijd en voorkomt dat iemand een taak vergeet. Het betekent ook dat cruciaal werk, zoals nachtelijke backups, afhangt van een planner die niemand waarschuwt als er iets misgaat.

Veelvoorkomende oorzaken van gemiste cronjobs

Serverdowntime. Staat de server uit of start hij opnieuw op het geplande moment, dan draait de job niet.

Syntaxfouten. Eén verkeerd veld in de schema-expressie kan betekenen dat de job op het verkeerde moment draait, of nooit.

Verkeerde configuratie. De verkeerde gebruiker, de verkeerde werkmap of een job in een crontab die nooit wordt geladen.

Verschillen in de omgeving. Cron draait met een minimale omgeving. Een commando dat in je shell werkt, kan onder cron mislukken omdat PATH of andere variabelen ontbreken.

Overlap en time-outs. Een job die langer duurt dan zijn interval kan botsen met de volgende run. Met een maximale looptijd op de monitor van de job weet je wanneer een run te lang duurt.

Fouten opsporen en oplossen

Begin bij de logs. Het systeemlog (vaak /var/log/syslog of het cronlog van je distributie) laat zien of cron de job heeft gestart. De eigen uitvoer van je job laat zien wat er daarna gebeurde.

Typische fouten en wat ze betekenen:

command not found: gebruik absolute paden, of stel PATH in bovenaan de crontab.

permission denied: controleer de bestandsrechten en onder welke gebruiker de job draait.

syntax error: controleer de schema-expressie en de aanhalingstekens in het commando.

Stuur de uitvoer door naar een logbestand, zodat fouten een spoor achterlaten:

30 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

Cronjobs monitoren

Logs helpen alleen als iemand ze leest. Monitoring maakt van een stille fout een melding. De betrouwbaarste manier is een heartbeat: de job stuurt een verzoek naar een monitoring-URL zodra hij klaar is. Komt dat verzoek niet binnen de verwachte tijd binnen, dan krijg je een melding.

Met cronmonitors van Uptimecheck pingt de job een unieke URL met GET of POST. De monitor neemt het crontab-schema over in jouw tijdzone, accepteert start- en eindpings op één monitor, waarschuwt als een run zijn maximale looptijd overschrijdt en kan de exitcode en de uitvoer van de job vastleggen. Ontbreekt een ping, dan gaat de melding naar e-mail, Slack, Microsoft Teams, Discord, Google Chat, Mattermost, Telegram, PagerDuty, ntfy, Pushover, een webhook of pushmeldingen op je telefoon, op elk abonnement. Lees de stapsgewijze uitleg in Zo monitor je cronjobs.

Best practices voor het inplannen

Plan zware jobs buiten de piekuren.

Spreid jobs die dezelfde resources gebruiken, in plaats van ze allemaal om middernacht te starten.

Gebruik een lock (bijvoorbeeld flock), zodat een trage run niet overlapt met de volgende.

Loop je schema’s na wanneer je applicatie verandert.

Cron op meerdere servers

Bestaat dezelfde job op meerdere servers, bepaal dan waar hij moet draaien en zorg dat hij één keer draait. Centrale planning of een lock in een gedeelde opslag helpt daarbij. Geef elke job een eigen heartbeat, zodat je weet welke server zijn run heeft gemist.

Cronjobs beveiligen

Cronjobs hebben vaak toegang tot databases, backups en inloggegevens.

Beperk wie crontabs mag bewerken.

Zet geheimen niet in de crontab-regel zelf, maar in beveiligde bestanden of in de omgevingsconfiguratie.

Loop jobs regelmatig na en verwijder de jobs die je niet meer nodig hebt.

Efficiënt omgaan met resources

Laat jobs alleen zo vaak draaien als nodig is en houd de commando’s licht. Een rapport dat niemand elk uur leest, kan ook dagelijks draaien.

Test voordat je erop vertrouwt

Draai een nieuwe job eerst met de hand onder dezelfde gebruiker, controleer de uitvoer en plan hem pas daarna in. Voeg tegelijk de heartbeat toe, zodat je vanaf de eerste nacht weet of hij heeft gedraaid.

Conclusie

Cronjobs zijn onmisbaar en onzichtbaar, en juist daarom hebben ze monitoring nodig. Pak de bekende oorzaken aan, log de uitvoer en geef elke belangrijke job een heartbeat.

Probeer Uptimecheck 14 dagen gratis, zonder creditcard.

Lees verder

Guides 6 min. leestijd

Cron-jobs monitoren met heartbeats

Cron-jobs falen stil. Een heartbeatmonitor waarschuwt je als een geplande job zich niet op tijd meldt. Hoe heartbeats werken, hoe je er een aan een crontab toevoegt en welke instellingen je kiest.

Lezen

Downtime is verleden tijd.

Stel je eerste monitor in binnen een minuut, of kijk eerst rond in de live demo.

14 dagen gratis proberen · Daarna gratis met 5 monitors · Geen creditcard