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'une
tâche en créant un cron.yaml fichier
est toujours compatible avec les tâches existantes.)
Cloud Scheduler permet également de planifier des tâches à l'aide d'un format plus lisible. Pour en savoir plus, consultez la section Autre format de tâche de ce document.
Format des tâches Cron
Vous pouvez utiliser la Google Cloud console, la Google Cloud CLIou 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.
Le tableau suivant présente le format et les valeurs possibles pour les différents champs de temps. Ils doivent respecter l'ordre suivant :
|------------------------------- 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 DIM à SAM ; ou 7 pour dimanche) |
Minute : indique le nombre de minutes après le début de l'heure à laquelle votre tâche s'exécute. Par exemple, si la minute est définie sur
0, la tâche 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, la tâche s'exécute à 8h00.Heure : indique le nombre d'heures après minuit à laquelle votre tâche s'exécute (arrondi à l'heure la plus proche, car les minutes restantes sont indiquées dans le champ
minute). Minuit correspond à0et 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 calendaire du mois. Par exemple,
1pour le premier jour du mois. Cloud Scheduler n'accepte pasLpour désigner 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,
1pour janvier ou, de manière équivalente,JAN.Jour de la semaine : indique le jour de la semaine. Par exemple, lundi correspond à
1et mardi à2.0ou7peuvent indiquer 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,SUNpour dimanche).- Ce champ est évalué comme un
ORinclusif avec leday of the monthchamp, 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 sur1et le jour de la semaine surSAT, la tâche 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*), la tâche ne s'exécute que le premier jour du mois.
- Ce champ est évalué comme un
Correspondance de 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 revient
parfois à laisser le champ non limité, car il n'est pas
limité à une valeur spécifique.
Voici deux exemples dans lesquels le champ "minute" n'est pas limité :
* 0 1 1 1: la tâche s'exécute chaque minute de l'heure de minuit le 1er janvier et les lundis.* * * * *: la tâche s'exécute chaque minute (de chaque heure, de chaque jour du mois, de chaque mois, de chaque jour de la semaine, car chacun de ces champs n'est pas limité non plus).
L'astérisque équivaut à un cas particulier d'une plage, où la
plage commence à la première valeur valide pour le champ et se termine à la dernière valeur
valeur 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 deuxième 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-50 0 * * MON-FRI
Correspondance d'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 * * *: la tâche s'exécute à minuit et à midi.0-5,30-35 * * * *: la tâche 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 une fréquence à laquelle parcourir la plage. On parle parfois d'utilisation d'une fonction d'étape (ou d'une valeur d'étape ou d'une expression de fréquence). Pour ce faire, spécifiez la plage, suivie de la barre oblique (/) et de la fréquence à 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 la suivante : 0 pour les champs "minute", "heure" et "jour de la semaine" (dimanche), et 1 pour les champs "jour du mois" et "mois".
La valeur d'étape ne peut pas être supérieure à la valeur maximale possible pour le champ.
L'étape par défaut est 1. Par conséquent, la fonction d'étape /1 revient à ne pas utiliser de fonction d'étape.
Exemples de plages qui utilisent des fonctions d'étape :
*/2: il s'agit d'une fonction d'étape valide pour n'importe quel champ. Pour le champ "minute", elle 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, elle correspond à 0, 2, 4, 6.0-12/2: il s'agit d'une fonction d'étape valide pour les champs "minute" et "heure". Elle correspond à 0, 2, 4, ... , 12.
Exemples de calendriers 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, à l'heure. La première exécution a lieu à minuit. La dernière exécution a lieu à midi.
Exemples de calendrier
Le tableau suivant présente quelques exemples de calendriers de job Cron et leur description :
| Programmer | Format des tâches Cron | Explication |
|---|---|---|
| Toutes les minutes | * * * * * |
S'exécute à la minute. Par exemple, 9h00, 9h01, 9h02, et ainsi de suite. |
| Toutes les heures | 0 * * * * |
S'exécute à l'heure. Par exemple, 9h00, 10h00, 11h00, etc. |
| Tous les jours | 0 0 * * * |
S'exécute tous les jours à 00h00 (au format 24 heures). |
| Tous les jours de la semaine (du lundi au vendredi) |
Les éléments suivants sont équivalents :
|
S'exécute à 00h00 (au format 24 heures) les lundis, mardis, mercredis, jeudis et vendredis. |
| Toutes les semaines | Les éléments suivants sont équivalents :
|
S'exécute le dimanche à 00h00 (au format 24 heures). |
| Tous les mois | 0 0 1 * * |
S'exécute à 00h00 (au format 24 heures) le premier jour du mois. |
| Tous les trimestres | Les éléments suivants sont équivalents :
|
S'exécute à 00h00 (au format 24 heures) le premier jour du trimestre, pour un calendrier trimestriel standard : 1er janvier, 1er avril, 1er juillet et 1er octobre. |
| Tous les ans | Les éléments suivants sont équivalents :
|
S'exécute à 00h00 (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 à utiliser pour évaluer le calendrier dans la
Google Cloud console (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 tâche
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 directe à l' API Cloud Scheduler.
Par exemple, certains événements récurrents peuvent être difficiles à spécifier à l'aide de Cron, comme "le troisième mardi de chaque mois" ou "toutes les deux semaines" (toutes les 336 heures). Dans ce cas, vous pouvez utiliser des constructions comme celles des exemples suivants :
03 of month 12:34
1,3,4,7,11,18,29 of jan,jul 12:34
1st friday of quarter 9:00
1st,third monday of month 04:00
2nd,3rd tue,wed,thu of feb,aug 13:50
every 336 hours
every 48 hours
every 5 minutes
every 60 minutes on mon,wed
every day 09:00
every minute
every sun,tue,thu 9:00
every wed of december 00:00
first sunday of month 12:00
second,4th tue,thursday of 3rd month of quarter 18:30
Pour en savoir plus sur la syntaxe, consultez la section Définir le job Cron Cron.