Un guide pour les expressions cron

Un guide pour les expressions Cron

1. Vue d'ensemble

En termes simples, cron est un utilitaire de base disponible sur les systèmes Unix. Il permet aux utilisateurs de planifier l'exécution périodique des tâches à une date / heure spécifiée. Et c'est naturellement un excellent outil pour automatiser de nombreuses exécutions de processus qui, autrement, nécessiteraient une intervention humaine.

Cron s'exécute en tant que processus démon - ce qui signifie qu'il ne doit être démarré qu'une seule fois et qu'il continuera à s'exécuter en arrière-plan. Ce processus utilisecrontab pour lire les entrées des plannings et lancer les tâches.

Au fil du temps,the cron expression format became widely adopted et peut souvent être utilisé dans de nombreux autres programmes et bibliothèques.

Lectures complémentaires:

Introduction au quartz

Apprenez à planifier des travaux avec l'API Quartz.

Read more

L'annotation @Scheduled in Spring

Comment utiliser l'annotation @Scheduled dans Spring pour exécuter des tâches après un délai déterminé, à une vitesse fixe ou selon une expression cron.

Read more

2. Travailler avecCrontab

Un planningcron est un simple fichier texte situé sous/var/spool/cron/crontabs sur les systèmes Linux. We cannot edit the crontab files directly; nous devons y accéder en utilisant la commandecrontab.

Par exemple, pour ouvrir le fichiercrontab, vous devez lancer cette commande:

crontab -e

Chaque ligne decrontab est une entrée avec une expression et une commande à exécuter:

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

Cette entrée est ajoutée pour exécuter le script mentionné chaque seconde.

3. Expression Cron

Comprenons l’expressioncron; il se compose de six champs:

       

À partir de ceux-ci, le champ<year> est facultatif.

3.1. Caractères spéciaux dans l'expression

  • * (all) - il est utilisé pour spécifier que l'événement doit se produire pour chaque unité de temps. Par exemple,“*” dans le champ <minute> - signifie «pour chaque minute»

  • ? (any) - il est utilisé dans les champs <day-of-month> et <day-of -week> pour désigner la valeur arbitraire - négligez la valeur du champ. Par exemple, si nous voulons lancer un script le "5 de chaque mois" quel que soit le jour de la semaine à cette date, nous spécifions un "?" dans le champ <day-of-week>

  • – (range) - il est utilisé pour déterminer la plage de valeurs. Par exemple, «10-11» dans le champ<hour> signifie «10e et 11e heures»

  • , (values) - il est utilisé pour spécifier plusieurs valeurs. Par exemple, "MON, WED, FRI” dans le champ <day-of-week> signifie les jours" lundi, mercredi et vendredi "

  • / (increments) - il est utilisé pour spécifier les valeurs incrémentielles. Par exemple, un“5/15” dans le champ <minute> signifie à "5, 20, 35 et 50 minutes d'une heure"

  • L (last) - il a des significations différentes lorsqu'il est utilisé dans divers domaines. Par exemple, s'il est appliqué dans le champ <day-of-month>, cela signifie le dernier jour du mois, c'est-à-dire «31 janvier» et ainsi de suite selon le mois calendaire. Il peut être utilisé avec une valeur de décalage, comme «L-3», qui désigne le «troisième au dernier jour du mois civil». Dans les <day-of-week>, il spécifie le «dernier jour de la semaine». Il peut également être utilisé avec une autre valeur en <day-of-week>, comme "6L", qui désigne le "dernier vendredi"

  • W (weekday) - il est utilisé pour spécifier le jour de la semaine (du lundi au vendredi) le plus proche d'un jour donné du mois. Par exemple, si nous spécifions «10W» dans le champ <day-of-month>, cela signifie le «jour de la semaine proche du 10 de ce mois». Donc, si "10" est un samedi, le travail sera déclenché le "9" et si "10" est un dimanche, il sera déclenché le "11". Si vous spécifiez «1W» dans le <day-of-month> et si «1er» est samedi, alors le travail sera déclenché le «3» qui est lundi, et il ne reviendra pas au mois précédent

  • # - il est utilisé pour spécifier l'occurrence «N-ème» d'un jour de la semaine du mois, par exemple, «3e vendredi du mois» peut être indiqué comme «6#3»

3.2. Exemples d'expressions Cron

Voyons quelques exemples d'expression decron en utilisant les combinaisons de champs et de caractères spéciaux:

À 12h00 (midi) tous les jours de l'année 2017:

0 0 12 * * ? 2017

Toutes les 5 minutes à partir de 13 h et se terminant à 13 h 55, puis à partir de 18 h et se terminant à 18 h 55, tous les jours:

0 0/5 13,18 * * ?

Toutes les minutes à partir de 13 h et se terminant à 13 h 05, tous les jours:

0 0-5 13 * * ?

À 13h15 et 13h45 tous les mardis du mois de juin:

0 15,45 13 ? 6 Tue

À 9h30 tous les lundis, mardis, mercredis, jeudis et vendredis:

0 30 9 ? * MON-FRI

À 9h30 le 15 de chaque mois:

0 30 9 15 * ?

À 18 h, le dernier jour de chaque mois:

0 0 18 L * ?

À 18 h, du 3 au dernier jour de chaque mois:

0 0 18 L-3 * ?

A 10h30 le dernier jeudi de chaque mois:

0 30 10 ? * 5L

A 18h le dernier vendredi de chaque mois pendant les années 2015, 2016 et 2017:

0 0 18 ? * 6L 2015-2017

À 10 h le troisième lundi de chaque mois:

0 0 10 ? * 2#3

À minuit tous les jours pendant cinq jours à compter du 10 du mois:

0 0 0 10/5 * ?

4. Cordes spéciales Cron

En plus des champs spécifiés dans l'expression cron, il existe également une prise en charge de certaines valeurs spéciales prédéfinies, qui peuvent être utilisées à la place des champs:

  • @reboot - exécuté une fois au démarrage

  • @yearly ou@annualy - exécuté une fois par an

  • @monthly - exécuté une fois par mois

  • @weekly - exécuté une fois par semaine

  • @daily ou@midnight - exécuté une fois par jour

  • @hourly - exécution toutes les heures

5. Conclusion

Dans cet article rapide, nous avons exploré les emploiscron etcrontab.

Nous avons également vu un certain nombre d’exemples d’expressions que vous pouvez utiliser dans votre travail quotidien ou tout simplement en déduire d’autres expressions.