Format et fuseau horaire de la tâche Cron

Les tâches Cron sont planifiées à des intervalles récurrents, spécifiés à l'aide d'un format basé sur unix-cron. Vous pouvez définir une planification afin que votre tâche s'exécute plusieurs fois par jour ou à des jours et mois spécifiques. Bien que nous ne recommandions plus son utilisation, l'ancienne syntaxe Cron App Engine reste compatible avec les tâches existantes.

Format de tâche Cron

Une planification est définie à l'aide du format de chaîne unix-cron (* * * * *), qui est un ensemble de cinq champs sur une ligne indiquant le moment où la tâche doit être exécutée.

Format de chaîne unix-cron

Vous pouvez utiliser la console Google Cloud, la Google Cloud CLI ou l'API REST Cloud Scheduler pour définir votre planification.

Les champs de l'heure présentent le format suivant et les valeurs possibles. Ils doivent respecter cet ordre:

Champ Format des valeurs valides
Minute 0-59
Heure 0-23
jour du mois 1-31
Mois 1-12 (ou JAN à DÉC)
Jour de la semaine 0-6 (ou SUN au SAT ; ou 7 pour dimanche)
  • Minute (Minute) : indique le nombre de minutes après le début de l'heure d'exécution de votre tâche. Par exemple, si la minute est définie sur 0, la tâche s'exécute en haut de l'heure (car c'est 0 minute après l'heure). Ainsi, si l'heure est 8h, la tâche s'exécute à 8h.

  • Heure:la valeur hour indique la durée d'exécution de votre tâche après minuit, en heures (arrondie à l'heure la plus proche, car les minutes restantes sont indiquées dans le champ minute). 0 minuit et midi 12. Par exemple, si l'heure est définie sur 0, la tâche est exécutée à minuit (car c'est 0 heure après minuit).

  • Jour du mois:indique la date calendaire du mois. Par exemple, 1 pour le premier jour du mois. Cloud Scheduler ne prend pas en charge L pour désigner le dernier jour du mois.

  • Month:indique le mois. Spécifiez le numéro du mois ou les trois premières lettres du nom du mois en majuscules. Par exemple, 1 pour janvier ou équivalent, JAN.

  • Jour de la semaine:indique le jour de la semaine. lundi est 1, mardi est 2, et ainsi de suite. 0 ou 7 peut indiquer dimanche. Spécifiez le jour de la semaine soit par un nombre, soit par les trois premières lettres du nom du jour de la semaine en majuscules (par exemple, SUN pour dimanche).

    • Ce champ est évalué comme un OR inclusif avec le champ day of the month, sauf si l'un de ces champs est marqué comme non restreint par l'astérisque (*). Par exemple, si le jour du mois est défini sur 1 et que le jour de la semaine est défini sur SAT, la tâche est exécutée le premier jour du mois et tous les samedis du mois, même si le premier jour du mois n'est pas un samedi. Si le jour de la semaine n'est pas restreint (défini sur *), la tâche n'est exécutée que le premier jour du mois.

Correspondance avec toutes les valeurs

Pour représenter toutes les valeurs d'un champ, utilisez l'astérisque: *. Lorsqu'un champ est défini sur l'astérisque, il correspond à toutes les valeurs valides de ce champ chaque fois que les autres conditions de champ sont remplies. Définir un champ sur l'astérisque revient parfois à laisser le champ unrestricted (sans restriction), car il n'est pas limité à une valeur spécifique.

Voici deux exemples dans lesquels le champ des minutes n'est pas restreint:

  • * 0 1 1 1: la tâche s'exécute toutes les minutes à minuit, le 1er janvier et les lundis.
  • * * * * *: la tâche s'exécute toutes les minutes (toutes les heures, tous les jours du mois, chaque mois, tous les jours de la semaine, car chacun de ces champs n'est pas non plus restreint).

L'astérisque équivaut à un cas particulier d'une plage, où la plage commence à la première valeur valide du champ et se termine à la dernière valeur valide du champ (par exemple, 0-59 pour le champ des minutes).

Correspondance avec une plage

Pour faire correspondre une plage de valeurs, spécifiez vos valeurs de début et d'arrêt, séparées par un trait d'union (-). N'incluez pas d'espaces dans la plage. Les plages sont inclusives. Le premier nombre doit être inférieur au second. Si vous utilisez des noms abrégés pour le mois ou la semaine (par exemple, JAN au lieu de 1 pour le premier mois de l'année), la première valeur doit apparaître plus tôt dans le mois ou la semaine que la seconde.

Les exemples équivalents suivants s'exécutent à minuit les lundis, mardis, mercredis, jeudis et vendredis (pour tous les mois):

  • 0 0 * * 1-5
  • 0 0 * * MON-FRI

Correspondance avec une liste

Les listes peuvent contenir n'importe quelle valeur valide pour le champ, y compris des plages. Indiquez vos valeurs, en les séparant par une virgule (,). N'incluez pas d'espaces dans la liste.

Exemples :

  • 0 0,12 * * *: la tâche s'exécute à minuit et midi.
  • 0-5,30-35 * * * *: la tâche s'exécute toutes les cinq premières minutes de chaque demi-heure (en début d'heure et une demi-heure après la fin de l'heure).

Valeurs ignorées dans une plage

Vous pouvez ignorer les valeurs d'une plage en spécifiant la vitesse à laquelle parcourir la plage. On parle parfois de fonction de pas (ou de valeur d'étape ou d'expression de taux). Pour ce faire, spécifiez la plage, suivie de la barre oblique (/) et de la vitesse à laquelle vous souhaitez ignorer cette plage.

Vous pouvez utiliser l'astérisque (*) pour indiquer la plage de toutes les valeurs du champ. Lorsque vous utilisez l'astérisque, la première valeur de la plage est: 0 pour les champs de minute, d'heure et de jour de la semaine (dimanche), et 1 pour les champs de jour du mois et de mois.

La valeur de l'étape ne peut pas être supérieure à la plus grande valeur possible pour le champ. L'étape par défaut est 1. La fonction de pas /1 revient donc à n'utiliser aucune fonction de pas.

Exemples de plages utilisant des fonctions d'étape:

  • */2: il s'agit d'une fonction d'étape valide pour n'importe quel champ. Pour le champ des minutes, il correspond à 0, 2, 4, ... , 58. Pour l'heure, elle correspond à 0, 2, 4, ... , 22. Pour le jour du mois, elle correspond à 1, 3, 5, ... , 31 (pour un mois de 31 jours). Pour le mois, elle correspond à 1, 3, 5, ... , 11. Pour le jour de la semaine, il correspond à 0, 2, 4, 6.

  • 0-12/2: fonction d'étape valide pour les champs de minutes et d'heures. Elle renvoie les valeurs 0, 2, 4, ... , 12.

Exemples de planifications utilisant des fonctions d'étape:

  • */2 * * * *: la tâche s'exécute toutes les deux minutes.

  • 0 0-12/2 * * *: la tâche s'exécute toutes les deux heures, toutes les heures. La première course a lieu à minuit. La dernière course est à midi.

Exemples de calendrier

Le tableau suivant présente des exemples de planifications de job Cron et leur description:

Planification Format de tâche Cron Explication
Toutes les minutes * * * * * Il fonctionne à la minute. Par exemple, 9:00 AM, 9:01 AM, :02 AM, et ainsi de suite.
Toutes les heures 0 * * * * S'exécute toutes les heures. (par exemple, 9h, 10h, 11h, etc.).
Tous les jours 0 0 * * * Exécution tous les jours à minuit (au format 24 heures).
Tous les jours de la semaine
(Lun-Ven)
Les méthodes suivantes sont équivalentes:
  • 0 0 * * 1-5
  • 0 0 * * MON-FRI
Exécution à minuit (au format 24 heures) les lundis, mardis, mercredis, jeudis et vendredis
Toutes les semaines Les méthodes suivantes sont équivalentes:
  • 0 0 * * 0
  • 0 0 * * 7
  • 0 0 * * SUN
Exécution tous les dimanches à minuit (au format 24 heures)
Tous les mois 0 0 1 * * Exécution à minuit le premier jour du mois à minuit (au format 24 heures).
Tous les trimestres Les méthodes suivantes sont équivalentes:
  • 0 0 1 1,4,7,10 *
  • 0 0 1 JAN,APR,JUL,OCT *
Exécution à minuit (au format 24 heures) le premier jour du trimestre, selon un calendrier trimestriel standard : 1er janvier, 1er avril, 1er juillet et 1er octobre.
Tous les ans Les méthodes suivantes sont équivalentes:
  • 0 0 1 1 *
  • 0 0 1 JAN *
Exécution à minuit (au format 24 heures) le premier jour du premier mois de l'année (1er janvier).

Fuseau horaire

Vous pouvez sélectionner le fuseau horaire pour évaluer la planification dans la console Google Cloud (sur la page Créer une tâche, sélectionnez un fuseau horaire dans la liste) ou via l'option gcloud --time-zone lorsque vous créez la tâche. Le fuseau horaire par défaut est Etc/UTC.

Pour certains fuseaux horaires, le passage à l'heure d'été peut entraîner l'exécution ou une non-exécution des tâches de manière inattendue. En effet, Cloud Scheduler s'exécute à l'horloge. Dans les cas où une heure peut survenir deux fois (par exemple, lorsque les horloges reviennent en arrière) et que votre tâche est planifiée à ce moment-là, elle peut observer des anomalies d'exécution.

Si votre tâche nécessite une cadence très spécifique, vous pouvez choisir un fuseau horaire qui ne respecte pas l'heure d'été. Plus précisément, UTC est recommandé pour Cloud Scheduler afin d'éviter complètement le problème.