Een gids voor cron-expressies

1. Overzicht

Simpel gezegd, cron is een basisprogramma dat beschikbaar is op Unix-gebaseerde systemen. Hiermee kunnen gebruikers taken plannen die periodiek op een bepaalde datum / tijd worden uitgevoerd. En het is natuurlijk een geweldig hulpmiddel voor het automatiseren van veel procesruns die anders menselijke tussenkomst zouden vereisen.

Cron draait als een daemon-proces - dit betekent dat het maar één keer hoeft te worden gestart en dat het op de achtergrond blijft draaien. Dit proces maakt gebruik van crontab om de ingangen van de schema's te lezen en de taken af ​​te trappen.

Na verloop van tijd, het cron-expressieformaat werd algemeen aanvaard en vele andere programma's en bibliotheken maken er gebruik van.

2. Werken met Crontab

EEN cron schema is een eenvoudig tekstbestand dat zich bevindt onder / var / spool / cron / crontabs op Linux-systemen. We kunnen het crontab bestanden rechtstreeks; we moeten het openen met behulp van de crontab opdracht.

Bijvoorbeeld om te openen crontab bestand, moeten we dit commando activeren:

crontab -e

Elke regel in crontab is een item met een uitdrukking en een commando om uit te voeren:

* * * * * /usr/local/ispconfig/server/server.sh

Dit item voert het genoemde script elke minuut uit.

3. Cron-expressie

Laten we de cron uitdrukking; het bestaat uit vijf velden:

3.1. Speciale tekens in expressie

  • * (alle) - specificeert dat de gebeurtenis voor elke tijdseenheid moet plaatsvinden. Bijvoorbeeld, “*” in de <minuut> veld - betekent 'voor elke minuut'
  • ? (ieder) - het wordt gebruikt in de <dag-van-maand> en <dag van de week>velden om de willekeurige waarde aan te duiden - negeer de veldwaarde. Als we bijvoorbeeld een script willen activeren op '5e van elke maand', ongeacht wat de dag van de week op die datum valt, specificeren we een '?”In de <dag-van-week> veld-
  • - (bereik) - bepaalt het waardebereik. Bijvoorbeeld, "10-11”In veld betekent '10e en 11e uur'
  • , (waarden) - specificeert meerdere waarden. Bijvoorbeeld, "MA, WO, VR " in <dag-van-week> veld betekent op de dagen 'maandag, woensdag en vrijdag'
  • / (stappen) - specificeert de incrementele waarden. Bijvoorbeeld een “5/15” in de <minuut>veld betekent op "5, 20, 35 en 50 minuten van een uur"
  • L (laatste) - het heeft verschillende betekenissen wanneer het in verschillende velden wordt gebruikt. Als het bijvoorbeeld is toegepast in de <dag-van-maand>veld, dan betekent het de laatste dag van de maand, d.w.z. "31ste voor januari" enzovoort volgens de kalendermaand. Het kan worden gebruikt met een offsetwaarde, zoals 'L-3", Wat de" derde tot en met de laatste dag van de kalendermaand "aangeeft. In de <dag-van-week>, specificeert het de "laatste dag van een week". Het kan ook worden gebruikt met een andere waarde in <dag-van-week>, Leuk vinden "6L", Wat staat voor" afgelopen vrijdag "
  • W (weekdag) - bepaalt de weekdag (maandag t / m vrijdag) die het dichtst bij een bepaalde dag van de maand ligt. Als we bijvoorbeeld specificeren "10W”In de <dag-van-maand>veld, dan betekent het de "weekdag nabij de 10e van die maand". Dus als "10e" een zaterdag is, dan wordt de taak geactiveerd op "9e", en als "10e" een zondag is, dan wordt deze geactiveerd op "11e". Als we specificeren “1W”In de <dag-van-maand> en als "1e" zaterdag is, dan wordt de taak geactiveerd op "3e", dat is maandag, en wordt niet teruggesprongen naar de vorige maand
  • # - specificeert de “N-de "keer dat een weekdag van de maand voorkomt," 3e vrijdag van de maand "kan bijvoorbeeld worden aangegeven als"6#3

3.2. Voorbeelden van Cron-expressies

Laten we enkele voorbeelden zien van cron expressie door de combinaties van velden en speciale tekens te gebruiken:

Elke dag om 12.00 uur:

0 12 * * ?

Elke 5 minuten beginnend om 13.00 uur en eindigend om 13.55 uur en dan beginnend om 18.00 uur en eindigend om 18.55 uur, elke dag:

0/5 13,18 * * ?

Elke minuut beginnend om 13.00 uur en eindigend om 13.05 uur, elke dag:

0-5 13 * * ?

Elke dinsdag om 13.15 uur en 13.45 uur in de maand juni:

15,45 13? 6 di

Elke maandag, dinsdag, woensdag, donderdag en vrijdag om 9.30 uur:

30 9? * MA-VR

Om 9.30 uur op de 15e van de maand:

30 9 15 * ?

Elke laatste dag van de maand om 18.00 uur:

0 18 L *?

Op de 3e tot laatste dag van de maand om 18.00 uur:

0 18 L-3 *?

Elke laatste donderdag van de maand om 10.30 uur:

30 10? * 5L

Elke derde maandag van de maand om 10.00 uur:

0 10 ? * 2#3

Elke dag om 12.00 uur middernacht gedurende vijf dagen, beginnend op de 10e van de maand:

0 0 10/5 * ?

4. Cron speciale snaren

Naast de velden die zijn gespecificeerd in de cron-expressie, is er ook ondersteuning voor enkele speciale, vooraf gedefinieerde waarden - die we kunnen gebruiken in plaats van de velden:

  • @reboot- loop een keer bij het opstarten
  • @jaarlijks of @jaarlijks - ren een keer per jaar
  • @maandelijks- loop een keer per maand
  • @wekelijks- ren een keer per week
  • @dagelijksof @middernacht- ren een keer per dag
  • @uurlijk- ren elk uur

5. Conclusie

In dit korte artikel hebben we de cron banen en crontab.

We hebben ook een aantal uitdrukkingsvoorbeelden gezien die we in ons dagelijks werk kunnen gebruiken, of gewoon andere uitdrukkingen uit kunnen afleiden.