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.