Cron-Expressie Generator
Stel een crontab-schema samen via keuzemenu's — minuut, uur, dag, maand, weekdag — met een leesbare uitleg in gewone taal en veelgebruikte voorinstellingen.
1.008 weergaven
Hoe het werkt
Een cron-expressie plant een terugkerende taak met vijf door spaties gescheiden velden, altijd in dezelfde volgorde: minuut · uur · dag-van-de-maand · maand · dag-van-de-week. Elk veld accepteert een waarde of een van vier speciale tekens: * betekent "elke mogelijke waarde"; */15 betekent "elke 15 eenheden, beginnend bij het minimum van het veld"; 1,15,30 is een expliciete lijst; 1-5 is een inclusief bereik. Van links naar rechts gelezen betekent 0 9 * * 1-5 "op minuut 0 van uur 9, elke dag van de maand, elke maand, op weekdagen 1 tot en met 5" — oftewel om 9:00 uur van maandag tot en met vrijdag. */10 * * * * vuurt de klok rond elke 10 minuten, en 0 0 1 * * vuurt om middernacht op de 1e van elke maand.
Stel een schema samen via de keuzemenu's en deze tool voegt de vijf velden samen, en vertaalt het resultaat vervolgens naar een zin in gewone taal, zodat u het kunt controleren voordat u het in een crontab-bestand of een cloudscheduler plakt. Veelgebruikte voorinstellingen — elke minuut, elk uur, dagelijks op een bepaald tijdstip, alleen op weekdagen — zijn met één klik beschikbaar voor de schema's waar mensen het vaakst naar grijpen.
Wat u moet weten
De grootste verrassing in de cron-semantiek: wanneer zowel dag-van-de-maand als dag-van-de-week beperkt zijn (geen van beide op * staat), worden de twee met OF gecombineerd, niet met EN. Dus 0 0 15 * 5 betekent niet "de 15e, als het een vrijdag is" — het betekent "de 15e van de maand, OF elke vrijdag", wat veel vaker afgaat dan de meeste mensen bedoelen. Als slechts een van beide ertoe doet, laat het andere veld dan op * staan.
De nummering van de dag-van-de-week kan ook verrassen: zowel 0 als 7 betekenen zondag in de meeste cron-implementaties, met maandag als 1. En cruciaal: cron draait altijd in de tijdzone die op de server is ingesteld — meestal UTC op cloudinfrastructuur — niet in de lokale tijdzone van wie het schema heeft opgesteld, dus een taak die is gepland voor 9 uur 's ochtends kan op een ander lokaal uur afgaan dan verwacht totdat de tijdzone van de host is bevestigd. Cloudschedulers zoals GitHub Actions' schedule:, AWS EventBridge en Kubernetes CronJob gebruiken allemaal diezelfde vijf-velden-syntax als basis, soms met leveranciersspecifieke uitbreidingen (een optioneel secondenveld, een afkorting voor benoemde dagen), zodat een hier opgebouwd schema vrijwel direct overdraagbaar is naar die platforms.
Veelgestelde vragen
Hoe voer ik iets elke 30 seconden uit?
De kleinste eenheid van klassieke cron is een minuut. De gebruikelijke oplossing is twee regels: een normale en een met `sleep 30 &&` vóór het commando — of gebruik systemd-timers, die seconden ondersteunen.
Waarom draaide mijn 9:00-taak op een vreemd tijdstip?
Bijna altijd de tijdzone: crontab draait in de lokale tijd van de server (in de cloud vaak UTC). Controleer met `date` op de host, of stel CRON_TZ in indien ondersteund.
Hoe test ik een expressie veilig?
Richt hem eerst op een logcommando: `* * * * * date >> /tmp/cron-test.log`, bevestig het ritme, en vervang dan pas door het echte commando. Controleer ook of de crontab-gebruiker het benodigde PATH heeft — de cron-omgeving is minimaal.
Wat gebeurt er als dag-van-de-maand én dag-van-de-week allebei zijn ingesteld?
Ze worden met OF gecombineerd, niet met EN — een schema zoals `0 0 15 * 5` draait op de 15e van de maand ÉN op elke vrijdag, niet alleen op een vrijdag die toevallig op de 15e valt. Cron alleen kan geen doorsnede van beide voorwaarden uitdrukken; die controle moet in de taak zelf plaatsvinden.
Houdt cron rekening met de zomertijd?
Dat hangt af van de implementatie, maar klassieke cron volgt over het algemeen de lokale tijd van de systeemklok, inclusief de verschuivingen door de zomer- en wintertijd — wat betekent dat een taak die gepland staat tijdens het uur waarin de klok vooruit of achteruit gaat, die dag nul of twee keer kan draaien. Servers die op UTC zijn ingesteld vermijden dit volledig, wat een extra reden is waarom de meeste productieschedulers standaard UTC gebruiken.
Kan ik een bereik en een stap in hetzelfde veld combineren, bijvoorbeeld voor om de dag doordeweeks?
Ja — een stap kan worden toegepast op een bereik in plaats van alleen op een sterretje: `1-5/2` in het veld dag-van-de-week betekent "elke tweede dag binnen maandag-vrijdag", oftewel maandag, woensdag, vrijdag. Deze gecombineerde bereik/stap-vorm wordt ondersteund door de meeste moderne cron-implementaties (waaronder Vixie cron en systemd), maar niet door de oudste POSIX-implementaties — test het dus eenmalig voordat u erop vertrouwt in een verouderde omgeving.
Vergelijkbare tools
Probleem melden
Cron-Expressie Generator
Reacties
Nog geen reacties — schrijf de eerste!