Les tâches Cron sont planifiées à intervalles réguliers (ces intervalles sont spécifiés à l'aide d'un format basé sur unix-cron). Vous pouvez définir un calendrier afin que votre tâche s'exécute plusieurs fois par jour, uniquement certains jours ou uniquement certains mois. (Bien que nous ne recommandions plus son utilisation, la planification d'un job en créant un fichier cron.yaml
est toujours compatible avec les jobs existants.)
Cloud Scheduler permet également de planifier des jobs à l'aide d'un format plus lisible. Pour en savoir plus, consultez la section Format de job alternatif de ce document.
Format des tâches Cron
Vous pouvez utiliser la console Google Cloud , la CLI Google Cloud ou l'API REST Cloud Scheduler pour définir votre calendrier.
Un calendrier est défini à l'aide du format de chaîne unix-cron (* * * * *
), un ensemble de cinq champs sur une ligne qui indique quand la tâche doit être exécutée.
Les champs de temps ont le format et les valeurs possibles suivants, et doivent respecter cet ordre :
|------------------------------- Minute (0-59) | |------------------------- Hour (0-23) | | |------------------- Day of the month (1-31) | | | |------------- Month (1-12; or JAN to DEC) | | | | |------- Day of the week (0-6; or SUN to SAT; or 7 for Sunday) | | | | | | | | | | * * * * *
Champ | Format des valeurs valides |
---|---|
Minute | 0-59 |
Heure | 0-23 |
jour du mois | 1-31 |
Mois | 1 à 12 (ou JAN à DEC) |
Jour de la semaine | 0-6 (ou SUN à SAT, ou 7 pour dimanche) |
Minute : indique le nombre de minutes après le début de l'heure à laquelle votre job s'exécute. Par exemple, si la minute est définie sur
0
, le job s'exécute au début de l'heure (car il s'agit de 0 minute après l'heure). Ainsi, si l'heure est 8h00, le job s'exécute à 8h00.Heure : indique le nombre d'heures après minuit auxquelles votre job s'exécute (arrondi à l'heure inférieure, car les minutes restantes sont indiquées dans le champ
minute
). Minuit correspond à0
et midi à12
. Par exemple, si l'heure est définie sur0
, la tâche s'exécute à minuit (car il s'agit de 0 heure après minuit).Jour du mois : indique la date du mois dans le calendrier. Par exemple,
1
pour le premier jour du mois. Cloud Scheduler n'accepte pasL
pour indiquer le dernier jour du mois.Mois : 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, de manière équivalente,JAN
.Jour de la semaine : indique le jour de la semaine. Par exemple, lundi correspond à
1
et mardi à2
.0
ou7
peuvent indiquer le dimanche. Spécifiez le jour de la semaine par son numéro ou par les trois premières lettres de son nom en majuscules (par exemple,SUN
pour dimanche).- Ce champ est évalué comme un
OR
inclusif avec le champday of the month
, sauf si l'un de ces champs est marqué comme non limité par l'astérisque (*
). Par exemple, si le jour du mois est défini sur1
et le jour de la semaine surSAT
, le job s'exécute 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 limité (défini sur*
), le job ne s'exécute que le premier jour du mois.
- Ce champ est évalué comme un
Correspondant à toutes les valeurs
Pour faire correspondre 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 pour ce champ chaque fois que les autres conditions de champ sont remplies. Définir un champ sur l'astérisque est parfois appelé laisser le champ sans restriction, car il n'est pas limité à une valeur spécifique.
Voici deux exemples dans lesquels le champ des minutes n'est pas limité :
* 0 1 1 1
: le job s'exécute chaque minute de la première heure du 1er janvier et des lundis.* * * * *
: le job s'exécute toutes les minutes (de chaque heure, de chaque jour du mois, de chaque mois, de chaque jour de la semaine, car chacun de ces champs est également illimité).
L'astérisque équivaut à un cas particulier de plage, où la plage commence à la première valeur valide pour le champ et se termine à la dernière valeur valide pour le champ (par exemple, 0-59
pour le champ "minute").
Correspondance d'une plage
Pour faire correspondre une plage de valeurs, spécifiez vos valeurs de début et de fin, 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 le jour de la semaine (par exemple, JAN
au lieu de 1
pour le premier mois de l'année), la première valeur doit être antérieure à la seconde dans le mois ou la semaine.
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
Faire correspondre une liste
Les listes peuvent contenir n'importe quelle valeur valide pour le champ, y compris des plages.
Spécifiez vos valeurs, séparées par une virgule (,
). N'incluez pas d'espaces dans la liste.
Exemples :
0 0,12 * * *
: le job s'exécute à midi et à minuit.0-5,30-35 * * * *
: le job s'exécute au cours de chacune des cinq premières minutes de chaque demi-heure (au début de l'heure et à la demi-heure).
Ignorer des valeurs dans une plage
Vous pouvez ignorer des valeurs dans une plage en spécifiant un taux de progression dans la plage. On parle parfois de fonction par paliers (ou de valeur ou d'expression de taux par paliers). Pour ce faire, spécifiez la plage, suivie de la barre oblique (/
) et de la vitesse à laquelle vous souhaitez parcourir la 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 "minute", "heure" et "jour de la semaine" (dimanche), et 1 pour les champs "jour du mois" et "mois".
La valeur du pas ne peut pas être supérieure à la valeur maximale possible pour le champ.
La valeur par défaut est 1. La fonction de pas /1
est donc identique à l'absence de fonction de pas.
Exemples de plages qui utilisent des fonctions par paliers :
*/2
: il s'agit d'une fonction de pas valide pour n'importe quel champ. Pour le champ des minutes, il correspond à 0, 2, 4, ... , 58. Pour l'heure, il correspond à 0, 2, 4, ... , 22. Pour le jour du mois, il 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 et 6.0-12/2
: il s'agit d'une fonction de pas valide pour les champs "minute" et "heure". Il correspond à 0, 2, 4, ... , 12.
Exemples de planifications utilisant des fonctions en escalier :
*/2 * * * *
: le job s'exécute toutes les deux minutes.0 0-12/2 * * *
: le job s'exécute toutes les deux heures, à l'heure pile. La première exécution a lieu à minuit. La dernière course est à midi.
Exemples de calendrier
Le tableau suivant présente quelques exemples de calendrier de job Cron et leur description :
Planification | Format des tâches Cron | Explication |
---|---|---|
Toutes les minutes | * * * * * |
S'exécute à la minute. Par exemple, 9h00, 9h01, 9h02, etc. |
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 (00h00 au format 24 heures). |
Tous les jours de la semaine(du lundi au vendredi) |
Les expressions suivantes sont équivalentes :
|
S'exécute à minuit (00h00 au format 24 heures) les lundis, mardis, mercredis, jeudis et vendredis. |
Toutes les semaines | Les expressions suivantes sont équivalentes :
|
Exécution le dimanche à 00h00. |
Tous les mois | 0 0 1 * * |
S'exécute à minuit (00h00 au format 24 heures) le premier jour du mois. |
Tous les trimestres | Les expressions suivantes sont équivalentes :
|
S'exécute à minuit (00h00 au format 24 heures) le premier jour du trimestre, pour une planification trimestrielle standard : 1er janvier, 1er avril, 1er juillet et 1er octobre. |
Tous les ans | Les expressions suivantes sont équivalentes :
|
S'exécute à 00h00 le premier jour du premier mois de l'année (1er janvier). |
Fuseau horaire
Vous pouvez sélectionner le fuseau horaire à utiliser pour évaluer le planning dans la consoleGoogle Cloud (sur la page Créer une tâche, sélectionnez un fuseau horaire dans la liste) ou à l'aide de l'option gcloud
--time-zone
lorsque vous créez la tâche.
La valeur de ce champ doit correspondre à l'abréviation du fuseau horaire utilisée dans la base de données tz.
Le fuseau horaire par défaut est UTC
.
Pour certains fuseaux horaires, l'heure d'été peut entraîner l'exécution ou la non-exécution inattendue de tâches. En effet, Cloud Scheduler s'exécute à l'heure de la montre. Dans les cas où une même heure peut se produire deux fois (comme quand l'heure recule) et que votre tâche est programmée pour s'exécuter à ce moment, elle peut présenter des anomalies d'exécution.
Si votre travail nécessite une cadence très spécifique, vous pouvez envisager de choisir un fuseau horaire qui n'observe pas l'heure d'été. Plus précisément, la zone UTC est recommandée pour Cloud Scheduler. Elle permet de contourner entièrement le problème.
Autre format de job
Vous pouvez utiliser un format de spécification de l'heure plus lisible, appelé "groc", qui constitue une alternative aux expressions Cron.
Notez que lorsque vous spécifiez un calendrier de tâches à l'aide de groc, vous devez utiliser la gcloud CLI ou envoyer une requête directement à l'API Cloud Scheduler.
Par exemple, il peut être difficile de spécifier certains événements récurrents à l'aide de cron, comme "le troisième mardi de chaque mois". Dans ce cas, vous pouvez utiliser des constructions comme celles des exemples suivants :
first sunday of month 12:00
2nd,3rd tue,wed,thu of feb,aug 13:50
every wed of december 00:00
1st friday of quarter 9:00
second,4th tue,thursday of 3rd month of quarter 18:30
1,3,4,7,11,18,29 of jan,jul 12:34
03 of month 12:34
every day 09:00
every sun,tue,thu 9:00
every 48 hours
every 5 minutes
every 60 minutes on mon,wed
every minute
Pour en savoir plus sur la syntaxe, consultez Définir la job Cron Cron.