·4 min leestijd

Cron-expressiehelper voor Mac

Een schema-expressie met de hand schrijven en hopen dat hij betekent wat je denkt dat hij betekent, is hoe taken om 3 uur 's nachts draaien in plaats van 3 uur 's middags.

Cron-syntax is vijf velden van getallen en symbolen die op de een of andere manier "elke werkdag om 9 uur behalve feestdagen" of "elke 15 minuten tussen 8 en 6" moet uitdrukken. De velden zijn minuut, uur, dag van de maand, maand en dag van de week, in een volgorde die niemand de eerste keer goed onthoudt, en sterretjes, komma's, streepjes en schuine strepen betekenen allemaal iets anders afhankelijk van hun positie.

0 9 * * 1-5 ziet er redelijk uit, maar is dat 9 uur 's ochtends of 's avonds, en betekent 1-5 maandag tot en met vrijdag of iets compleet anders, afhankelijk van of de cron-implementatie zondag als 0 of als 7 telt? Dit verkeerd krijgen in een deploymentpipeline, een back-uptaak, of een geplande rapportage betekent ofwel stille fouten ofwel een taak die op een ongelegen tijdstip afgaat — soms wekenlang zonder dat iemand het merkt.

Elke cron-implementatie heeft zijn eigen eigenaardigheden

Standaard Unix-cron, Kubernetes CronJobs, AWS EventBridge en diverse CI-platforms gebruiken allemaal ongeveer dezelfde syntax van vijf velden, maar verschillen op kleine punten — of seconden ondersteund worden, hoe de nummering van de dag van de week werkt, of bepaalde afkortingen zoals @daily geldig zijn. Een schema schrijven dat bij de eerste deploy correct werkt, betekent precies begrijpen welke cron-variant je target.

Vertaal expressies naar gewone taal

Bellows bevat een cron-expressiehelper die een schema-string neemt en in gewone taal uitlegt wat hij daadwerkelijk betekent, zodat je je bedoeling kunt verifiëren voordat je een geplande taak ergens uitrolt.

Bellows cron-expressiehelper legt een schema-string uit op macOS

Verifiëren voordat je deployt

Een geplande taak die op het verkeerde moment afgaat, is vaak een stille fout — er crasht niets, hij draait gewoon wanneer je dat niet wilde, soms overlappend met een onderhoudsvenster of een database beukend tijdens piekverkeer. De betekenis in gewone taal van een cron-string controleren voordat je een deploymentconfiguratie mergt, vangt dit op voordat het een 2 uur 's nachts-pager wordt.

Iemand anders' schema lezen

Een codebase erven met een dozijn bestaande cron-taken betekent uitzoeken wat elk ervan doet voordat je er veilig een kunt wijzigen. Elke expressie snel vertalen is sneller dan vijf cryptische velden één voor één mentaal parsen.

Haal Bellows in de Mac App Store

Volgend artikel

Bellows

41 developer tools in one native Mac app — JSON, JWT, Base64, hashes, and more.

Get Bellows on the Mac App Store