Zo gebruik je deze tool
- Typ of plak een cron-expressie, of kies een van de veelgebruikte schema's.
- Lees de betekenis in gewone taal. Bij ongeldige velden wordt aangegeven om welk veld het gaat en waarom het ongeldig is.
- Bekijk de volgende 10 uitvoeringstijden in je lokale tijdzone. Schakel over naar UTC als je server UTC gebruikt.
- Kopieer de uitvoeringstijden om ze te delen, of pas de expressie aan totdat het schema aan je wensen voldoet.
Hoe het werkt
Een standaard cron-expressie, zoals gebruikt door crontab op Linux (Vixie cron en cronie) en door veel CI- en hostingplanners, bestaat uit vijf velden die door spaties worden gescheiden: minuut (0–59), uur (0–23), dag van de maand (1–31), maand (1–12 of JAN–DEC) en dag van de week (0–7 of SUN–SAT, waarbij zowel 0 als 7 zondag betekent). Elk veld accepteert * voor elke waarde, één waarde, een bereik zoals 1-5, een lijst zoals 1,15,30 en een stap zoals */15 (elke 15e waarde) of 9-17/2 (elk tweede uur van 9 tot en met 17). Namen zijn niet hoofdlettergevoelig. De verkorte notaties @yearly (of @annually), @monthly, @weekly, @daily (of @midnight) en @hourly staan voor 0 0 1 1 *, 0 0 1 * *, 0 0 * * 0, 0 0 * * * en 0 * * * *.
Voor de velden dag van de maand en dag van de week geldt een regel die veel mensen verrast. Als een van beide velden begint met *, moet een dag aan beide velden voldoen. Als beide velden beperkt zijn, komt een dag overeen zodra die aan een van beide voldoet: 0 0 13 * 5 wordt uitgevoerd op de 13e van elke maand én op elke vrijdag, niet alleen op vrijdag de 13e. Omdat wordt gecontroleerd of het veld met * begint, telt een stap zoals */2 ook als onbeperkt. Dit werkt zo in Vixie cron en cronie; een paar andere planners werken anders.
De volgende uitvoeringstijden worden berekend in de tijdzone van je browser of in UTC, zoals de meeste servers en cloudplanners gebruiken. Cron zelf gebruikt de tijdzone van de machine waarop het draait. Rond de overgang naar zomer- of wintertijd gedragen echte cron-daemons zich verschillend. Deze tool laat lokale tijden die niet bestaan wanneer de klok vooruitgaat weg en toont een herhaald uur één keer. Uitgebreide syntaxis wordt niet ondersteund: Quartz-expressies met zes of zeven velden en seconden of jaren, en de speciale tekens ?, L, W en #.
Voorbeelden
Gezondheidscontrole tijdens kantooruren
*/15 9-17 * * 1-5 betekent elke 15 minuten tussen 09:00 en 17:59, van maandag tot en met vrijdag. De laatste uitvoering van elke dag is om 17:45.
Dagelijkse back-up 's nachts
30 2 * * * wordt elke dag om 02:30 uitgevoerd. Als de server UTC gebruikt en jij in New York bent, toont de lijst met volgende uitvoeringstijden in de UTC-modus de tijden waarop de server de taak daadwerkelijk uitvoert.
De valkuil van dagvelden
0 9 1 * 1 lijkt te betekenen: ‘om 9:00 op de eerste van de maand als dat een maandag is’, maar de taak wordt om 09:00 uitgevoerd op de 1e van elke maand én op elke maandag. Stel 0 9 1-7 * * in om de taak alleen op de eerste maandag uit te voeren en controleer de weekdag in het script.
Veelgestelde vragen
Wat betekent */5 in cron?
Dit betekent elke vijfde waarde van het veld, vanaf de laagste waarde. In het minutenveld wordt */5 uitgevoerd op minuut 0, 5, 10 … 55. In het uurveld wordt */5 uitgevoerd om 0, 5, 10, 15 en 20 uur. De tijd tussen 20:00 en middernacht is dus vier uur, geen vijf.
Waarom wordt mijn taak op meer dagen uitgevoerd dan verwacht?
Als zowel het veld dag van de maand als het veld dag van de week beperkt is, voert cron de taak uit op dagen die aan een van beide velden voldoen. Zo wordt 0 0 15 * 1 uitgevoerd op de 15e én op elke maandag. Stel een van de twee velden in op * om alleen het andere veld te laten gelden.
Welke tijdzone gebruikt cron?
Cron gebruikt de systeemtijdzone van de server waarop de cron-daemon draait, tenzij de crontab CRON_TZ of TZ instelt (ondersteund door cronie). Cloudplanners gebruiken vaak standaard UTC. Gebruik de UTC-schakelaar om te zien welke tijden een UTC-server gebruikt.
Kan ik seconden of een jaarveld gebruiken?
Niet in standaard cron, dat een resolutie van één minuut en vijf velden heeft. Indelingen met zes of zeven velden en seconden en jaren zijn bedoeld voor Quartz, Spring en vergelijkbare bibliotheken en worden niet door deze tool ondersteund.
Is zondag 0 of 7?
Beide. In het veld dag van de week betekenen 0 en 7 allebei zondag, is 1 maandag en 6 zaterdag. Je kunt ook de afkortingen SUN tot en met SAT gebruiken.
Privacy
De expressie wordt verwerkt en de uitvoeringstijden worden in je browser berekend. Wat je invoert, wordt niet geüpload of opgeslagen en wordt niet opgenomen in analytics.