Un guide des 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 des tâches à exécuter périodiquement à 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 comme un processus démon - cela signifie qu'il ne doit être démarré qu'une seule fois et qu'il continuera à fonctionner en arrière-plan. Ce processus utilise crontab pour lire les entrées des horaires et lancer les tâches.

Au fil du temps, le format d'expression cron est devenu largement adopté et de nombreux autres programmes et bibliothèques l'utilisent.

2. Travailler avec Crontab

Un calendrier cron est un simple fichier texte situé sous / var / spool / cron / crontabs sur les systèmes Linux. Nous ne pouvons pas éditer les fichiers crontab directement ; nous devons y accéder en utilisant la commande crontab .

Par exemple, pour ouvrir le fichier crontab , nous devons lancer cette commande:

crontab -e

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

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

Cette entrée exécute le script mentionné toutes les minutes.

3. Expression Cron

Comprenons l' Cron expression; il se compose de cinq champs:

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

  • * (tout) - spécifie 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 < jour-du-mois> et < jour-de-semaine> pour désigner la valeur arbitraire - négligez la valeur du champ. Par exemple, si nous voulons déclencher un script le «5 de chaque mois», quel que soit le jour de la semaine à cette date, nous spécifions un « ? "Dans le champ < jour de la semaine>
  • - (plage) - détermine la plage de valeurs. Par exemple, " 10-11 " dans champ signifie «10e et 11e heures»
  • , (valeurs) - spécifie plusieurs valeurs. Par exemple, " MON, WED, FRI" dans le champ < day-of-week> signifie les jours "lundi, mercredi et vendredi"
  • / (incréments) - spécifie les valeurs incrémentielles. Par exemple, un "5/15" dans le champ < minute> signifie "5, 20, 35 et 50 minutes d'une heure"
  • L (dernier) - il a des significations différentes lorsqu'il est utilisé dans divers domaines. Par exemple, s'il est appliqué dans le champ < jour du mois> , cela signifie le dernier jour du mois, c'est-à-dire «31 janvier» et ainsi de suite selon le mois civil. 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 le < jour de la semaine> , il spécifie le «dernier jour de la semaine». Il peut également être utilisé avec une autre valeur dans < jour de la semaine> , comme " 6L ", qui indique le "dernier vendredi"
  • W (jour de la semaine) - détermine 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 < jour du mois> , cela signifie le «jour de la semaine proche du 10 de ce mois». Donc, si «10e» est un samedi, alors le travail sera déclenché le «9», et si «10» est un dimanche, alors il se déclenchera le «11». Si nous spécifions " 1W " dans le < jour du mois> et si "1er" est samedi, alors la tâche sera déclenchée le "3" qui est lundi, et elle ne reviendra pas au mois précédent
  • # - spécifie la « N- ième» occurrence d'un jour de la semaine du mois, par exemple, «3e vendredi du mois» peut être indiqué par « 6 # 3 »

3.2. Exemples d'expressions Cron

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

À 12h00 (midi) tous les jours:

0 12 * * ?

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/5 13,18 * * ?

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

0-5 13 * * ?

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

15,45 13 ? 6 Tue

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

30 9 ? * MON-FRI

À 9h30 le 15 de chaque mois:

30 9 15 * ?

À 18 h, le dernier jour de chaque mois:

0 18 L * ?

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

0 18 L-3 * ?

À 10h30 le dernier jeudi de chaque mois:

30 10 ? * 5L

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

0 10 ? * 2#3

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

0 0 10/5 * ?

4. Cron Special Strings

En plus des champs spécifiés dans l'expression cron, il existe également un support pour certaines valeurs spéciales prédéfinies - que nous pouvons utiliser à la place des champs:

  • @reboot - exécuter une fois au démarrage
  • @yearly ou @annualy - diffusé 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 - s'exécute toutes les heures

5. Conclusion

Dans cet article rapide, nous avons exploré les tâches cron et crontab .

Nous avons également vu un certain nombre d'exemples d'expressions que nous pouvons utiliser dans notre travail quotidien, ou simplement en déduire d'autres expressions.