Instellen van tijdschema's voor geplande taken via een CRON expressie
Inleiding
cron is een UNIX-hulpprogramma dat al lange tijd bestaat, waardoor de planningsmogelijkheden krachtig en bewezen zijn. De taken in ReflexBlue kun je voorzien van een cron expressie.
ReflexBlue gebruikt “cron-expressies”, waarmee je planningen kunt maken zoals: “Om 8:00 uur van maandag tot en met vrijdag” of “Om 1:30 uur op elke laatste vrijdag van de maand”.
Cron-expressies zijn krachtig, maar kunnen verwarrend zijn. Deze handleiding is bedoeld om wat mysterie weg te nemen bij het maken van een cron-expressie, en biedt gebruikers een naslagbron voordat ze hun vraag stellen op een forum of mailinglijst.
Formaat
Een cron-expressie is een tekenreeks die bestaat uit 6 of 7 velden, gescheiden door witruimte. Velden kunnen elk van de toegestane waarden bevatten, eventueel gecombineerd met speciale tekens die voor dat veld zijn toegestaan. De velden zijn als volgt:
| Veldnaam | Verplicht | Toegestane waarden | Toegestane speciale tekens |
|---|---|---|---|
| Seconden | JA | 0-59 | , - * / |
| Minuten | JA | 0-59 | , - * / |
| Uren | JA | 0-23 | , - * / |
| Dag van maand | JA | 1-31 | , - * ? / L W |
| Maand | JA | 1-12 of JAN-DEC | , - * / |
| Dag van week | JA | 1-7 of SUN-SAT | , - * ? / L # |
| Jaar | NEE | leeg, 1970-2099 | , - * / |
Cron-expressies kunnen dus zo eenvoudig zijn als: * * * * ? *
of complexer, zoals: 0/5 14,18,3-39,52 * ? JAN,MAR,SEP MON-FRI 2002-2010
Speciale tekens
*(“alle waarden”) – selecteert alle waarden binnen een veld. Bijvoorbeeld,*in het minutenveld betekent “elke minuut”.?(“geen specifieke waarde”) – handig wanneer je iets moet specificeren in één van de twee velden waarin dit teken is toegestaan, maar niet in beide. Bijvoorbeeld, als ik een trigger wil laten afgaan op een specifieke dag van de maand (bijv. de 10e), maar het niet uitmaakt welke dag van de week dat is, zet ik10in het veld voor dag van de maand, en?in het veld voor dag van de week.-– geeft een bereik aan. Bijvoorbeeld,10-12in het urenveld betekent “de uren 10, 11 en 12”.,– geeft extra waarden aan. Bijvoorbeeld,MON,WED,FRIin het dag-van-weekveld betekent “de dagen maandag, woensdag en vrijdag”./– geeft stappen aan. Bijvoorbeeld,0/15in het secondenveld betekent “de seconden 0, 15, 30 en 45”.5/15betekent “de seconden 5, 20, 35 en 50”. Je kunt ook/gebruiken na*, wat gelijk is aan0/.1/3in het dag-van-maandveld betekent “elke 3 dagen starten op de eerste dag van de maand”.L(“laatste”) – betekent iets anders in elk van de twee velden waarin dit is toegestaan. In het dag-van-maandveld betekentL“de laatste dag van de maand” – bijv. 31 januari, 28 februari (niet-schrikkeljaar). In het dag-van-weekveld betekentLalleen “7” of “zaterdag”. In combinatie met een waarde, bijv.6L, betekent het “de laatste vrijdag van de maand”. Je kunt ook een offset gebruiken, bijv.L-3betekent “de derde tot laatste dag van de maand”. Vermijd het combineren vanLmet lijsten of reeksen.W(“werkdag”) – geeft de dichtstbijzijnde werkdag (maandag-vrijdag) bij een opgegeven dag aan.15Wbetekent: “de dichtstbijzijnde werkdag bij de 15e van de maand”. Valt de 15e op een zaterdag, dan wordt het vrijdag de 14e. Valt het op zondag, dan wordt het maandag de 16e.1Wop een zaterdag betekent maandag de 3e.Wwerkt alleen voor één enkele dag, niet voor reeksen. ::: tip De tekensLenWkunnen worden gecombineerd totLW, wat betekent: “laatste werkdag van de maand”.#– geeft “de n-de” dag van de week in de maand aan. Bijvoorbeeld,6#3betekent “de derde vrijdag van de maand”. Andere voorbeelden:2#1= eerste maandag van de maand,4#5= vijfde woensdag van de maand. Als er geen vijfde woensdag is, wordt die maand overgeslagen. ::: tip Maand- en weekdagnamen en speciale tekens zijn niet hoofdlettergevoelig.MONis hetzelfde alsmon.
Voorbeelden
Hier zijn enkele volledige voorbeelden:
| Expressie | Betekenis |
|---|---|
0 0 12 * * ? | Elke dag om 12:00 uur (middag) |
0 15 10 ? * * | Elke dag om 10:15 uur |
0 15 10 * * ? | Elke dag om 10:15 uur |
0 15 10 * * ? * | Elke dag om 10:15 uur |
0 15 10 * * ? 2005 | Elke dag om 10:15 uur gedurende het jaar 2005 |
0 * 14 * * ? | Elke minuut van 14:00 tot 14:59 uur |
0 0/5 14 * * ? | Elke 5 minuten van 14:00 tot 14:55 uur |
0 0/5 14,18 * * ? | Elke 5 minuten van 14:00 tot 14:55 uur én van 18:00 tot 18:55 uur |
0 0-5 14 * * ? | Elke minuut van 14:00 tot 14:05 uur |
0 10,44 14 ? 3 WED | Elke woensdag in maart om 14:10 en 14:44 uur |
0 15 10 ? * MON-FRI | Elke werkdag (ma-vr) om 10:15 uur |
0 15 10 15 * ? | Op de 15e van elke maand om 10:15 uur |
0 15 10 L * ? | Op de laatste dag van elke maand om 10:15 uur |
0 15 10 L-2 * ? | Op de tweede tot laatste dag van elke maand om 10:15 uur |
0 15 10 ? * 6L | Op de laatste vrijdag van elke maand om 10:15 uur |
0 15 10 ? * 6L 2002-2005 | Op de laatste vrijdag van elke maand van 2002 t/m 2005 om 10:15 uur |
0 15 10 ? * 6#3 | Op de derde vrijdag van elke maand om 10:15 uur |
0 0 12 1/5 * ? | Elke 5 dagen vanaf de 1e van de maand om 12:00 uur |
0 11 11 11 11 ? | Elk jaar op 11 november om 11:11 uur |
Let op het effect van ? en * in de velden voor dag-van-week en dag-van-maand!
Notities
Ondersteuning voor het gelijktijdig specificeren van een waarde voor dag-van-week én dag-van-maand is nog niet volledig (gebruik momenteel het ?-teken in een van deze velden).
Wees voorzichtig met tijden rond de zomertijdwissel in je regio (bijv. rond 2:00 uur in de VS), want tijdverschuivingen kunnen leiden tot dubbele of gemiste triggers. Deze Wikipedia-pagina geeft hierover meer informatie: https://secure.wikimedia.org/wikipedia/en/wiki/Daylight_saving_time_around_the_world
Meer in deze rubriek
- Documentsjablonen
- GS1 Data Matrix
- Gevaaranalyse en Kritische Controlepunten
- Dynamische velden
- Integratie
- Offertes
- Rapport Functies
- Regular Expressions
- Export script voorbeelden
- Instellen van tijdschema's voor geplande taken via een CRON expressie
- Rapport velden