I cron job vengono pianificati a intervalli ricorrenti, specificati utilizzando un formato basato su unix-cron. Puoi definire una programmazione in modo che il job venga eseguito più volte al giorno oppure in giorni e mesi specifici. Sebbene non ne consigliamo più l'utilizzo, la pianificazione di un job tramite la creazione di un file cron.yaml
è ancora supportata per i job esistenti.
Cloud Scheduler supporta anche la pianificazione dei job utilizzando un formato più leggibile. Per saperne di più, consulta la sezione Formato alternativo del job in questo documento.
Formato cron job
Puoi utilizzare la console Google Cloud , la Google Cloud CLI o l'API REST di Cloud Scheduler per impostare la pianificazione.
Una pianificazione viene definita utilizzando il formato di stringa unix-cron (* * * * *
), ovvero un insieme di cinque campi in una riga che indicano quando deve essere eseguito il job.
I campi relativi all'ora hanno il seguente formato e valori possibili e devono seguire questo ordine:
|------------------------------- 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) | | | | | | | | | | * * * * *
Campo | Formato dei valori validi |
---|---|
Minuto | 0-59 |
Ora | 0-23 |
Giorno del mese | 1-31 |
Mese | 1-12 (o da GEN a DIC) |
Giorno della settimana | 0-6 (o SUN-SAT o 7 per la domenica) |
Minuto:indica quanti minuti dopo l'inizio dell'ora viene eseguito il job. Ad esempio, se i minuti sono impostati su
0
, il job viene eseguito all'inizio dell'ora (perché sono trascorsi 0 minuti dall'inizio dell'ora). Quindi, se l'ora è le 8:00, il job viene eseguito alle 8:00.Ora:indica di quante ore dopo mezzanotte viene eseguito il job (arrotondato per difetto all'ora più vicina, perché i minuti rimanenti sono indicati nel campo
minute
). Mezzanotte è0
e mezzogiorno è12
. Ad esempio, se l'ora è impostata su0
, il job viene eseguito a mezzanotte (perché sono 0 ore dopo mezzanotte).Giorno del mese:indica la data del calendario del mese. Ad esempio,
1
per il primo giorno del mese. Cloud Scheduler non supportaL
per indicare l'ultimo giorno del mese.Mese:indica il mese. Specifica il numero del mese o le prime tre lettere del nome del mese in maiuscolo. Ad esempio,
1
per gennaio o, in modo equivalente,JAN
.Giorno della settimana:indica il giorno della settimana. Ad esempio, lunedì è
1
e martedì è2
.0
o7
possono indicare la domenica. Specifica il giorno della settimana per numero o con le prime tre lettere del nome del giorno della settimana in maiuscolo (ad esempioSUN
per domenica).- Questo campo viene valutato come
OR
inclusivo con il campoday of the month
, a meno che uno di questi campi non sia contrassegnato come senza limitazioni dall'asterisco (*
). Ad esempio, se il giorno del mese è impostato su1
e il giorno della settimana è impostato suSAT
, il job viene eseguito il primo giorno del mese e ogni sabato del mese, anche se il primo giorno del mese non è un sabato. Se il giorno della settimana non è soggetto a limitazioni (impostato su*
), il job viene eseguito solo il primo giorno del mese.
- Questo campo viene valutato come
Corrispondenza con tutti i valori
Per trovare tutti i valori di un campo, utilizza l'asterisco: *
. Quando un campo è impostato
sull'asterisco, il campo corrisponde a tutti i valori validi per quel campo ogni volta che
le altre condizioni del campo sono soddisfatte. L'impostazione di un campo sull'asterisco
a volte viene definita come lasciare il campo senza restrizioni, perché non è
limitato a un valore specifico.
Ecco due esempi in cui il campo dei minuti non è limitato:
* 0 1 1 1
: il job viene eseguito ogni minuto dell'ora di mezzanotte il 1° gennaio e il lunedì.* * * * *
: il job viene eseguito ogni minuto (di ogni ora, di ogni giorno del mese, di ogni mese, ogni giorno della settimana, perché anche ciascuno di questi campi non è limitato).
L'asterisco equivale a un caso speciale di intervallo, in cui l'intervallo inizia dal primo valore valido per il campo e termina con l'ultimo valore valido per il campo (ad esempio, 0-59
per il campo dei minuti).
Corrispondenza con un intervallo
Per trovare una corrispondenza con un intervallo di valori, specifica i valori iniziale e finale separati da un trattino (-
). Non includere spazi nell'intervallo. Gli intervalli sono inclusi. Il primo numero deve essere inferiore al secondo. Se utilizzi nomi abbreviati
per il mese o il giorno della settimana (ad esempio, JAN
anziché 1
per il primo
mese dell'anno), il primo valore deve essere precedente al secondo valore nel mese o nella settimana.
I seguenti esempi equivalenti vengono eseguiti a mezzanotte il lunedì, il martedì, il mercoledì, il giovedì e il venerdì (per tutti i mesi):
0 0 * * 1-5
0 0 * * MON-FRI
Corrispondenza di un elenco
Gli elenchi possono contenere qualsiasi valore valido per il campo, inclusi gli intervalli.
Specifica i valori separati da una virgola (,
). Non includere spazi nell'elenco.
Esempi:
0 0,12 * * *
: il job viene eseguito a mezzanotte e a mezzogiorno.0-5,30-35 * * * *
: il job viene eseguito nei primi cinque minuti di ogni mezz'ora (all'inizio dell'ora e a mezz'ora).
Ignorare i valori in un intervallo
Puoi saltare i valori in un intervallo specificando una velocità di avanzamento
nell'intervallo. A volte si parla di utilizzo di una funzione a gradini (o
valore a gradini o espressione di velocità). Per farlo, specifica l'intervallo, seguito dalla
barra (/
) e dalla velocità con cui vuoi scorrere l'intervallo.
Puoi utilizzare l'asterisco (*
) per indicare l'intervallo di tutti i valori del campo.
Quando utilizzi l'asterisco, il primo valore nell'intervallo è: 0 per i campi minuti, ora e giorno della settimana (domenica) e 1 per i campi giorno del mese e mese.
Il valore del passaggio non può essere maggiore del valore massimo possibile per il campo.
Il passaggio predefinito è 1, quindi la funzione step /1
equivale a non utilizzare affatto una funzione step.
Intervalli di esempio che utilizzano funzioni a gradino:
*/2
: questa è una funzione step valida per qualsiasi campo. Per il campo dei minuti, corrisponde a 0, 2, 4, ... , 58. Per l'ora, corrisponde a 0, 2, 4, ... , 22. Per il giorno del mese, corrisponde a 1, 3, 5, ... , 31 (per un mese di 31 giorni). Per il mese, corrisponde a 1, 3, 5, ... , 11. Per il giorno della settimana, corrisponde a 0, 2, 4, 6.0-12/2
: questa è una funzione di incremento valida per i campi dei minuti e delle ore. Corrisponde a 0, 2, 4, ... , 12.
Esempi di pianificazioni che utilizzano funzioni a gradino:
*/2 * * * *
: il job viene eseguito ogni due minuti.0 0-12/2 * * *
: il job viene eseguito ogni due ore, all'ora. La prima esecuzione è a mezzanotte. L'ultima corsa è a mezzogiorno.
Pianificazioni di esempio
La tabella seguente mostra alcuni esempi di pianificazioni dei job cron e la relativa descrizione:
Pianificazione | Formato cron job | Spiegazione |
---|---|---|
Ogni minuto | * * * * * |
Viene eseguito ogni minuto. Ad esempio, 9:00, 9:01, 9:02 e così via. |
Ogni ora | 0 * * * * |
Viene eseguito ogni ora. Ad esempio, 9:00, 10:00, 11:00 e così via. |
Ogni giorno | 0 0 * * * |
Viene eseguito alle 00:00 (nel formato 24 ore) ogni giorno. |
Tutti i giorni feriali (lun-ven) |
Le seguenti espressioni sono equivalenti:
|
Viene eseguito alle 00:00 (00:00 nel formato 24 ore) il lunedì, il martedì, il mercoledì, il giovedì e il venerdì. |
Ogni settimana | Le seguenti espressioni sono equivalenti:
|
Viene eseguito la domenica alle 00:00 (00:00 nel formato 24 ore). |
Ogni mese | 0 0 1 * * |
Viene eseguito alle 00:00 (formato 24 ore) del primo giorno del mese. |
Ogni trimestre | Le seguenti espressioni sono equivalenti:
|
Viene eseguito alle ore 00:00 (in formato 24 ore) del primo giorno del trimestre, per una pianificazione trimestrale standard: 1° gennaio, 1° aprile, 1° luglio e 1° ottobre. |
Ogni anno | Le seguenti espressioni sono equivalenti:
|
Viene eseguito alle ore 00:00 (in formato 24 ore) del primo giorno del primo mese dell'anno (1° gennaio). |
Fuso orario
Puoi selezionare il fuso orario per valutare la pianificazione nella consoleGoogle Cloud (nella pagina Crea un job, seleziona un fuso orario dall'elenco) o tramite il flag gcloud
--time-zone
quando crei il job.
Il valore di questo campo deve essere l'abbreviazione del fuso orario utilizzata nel
database tz.
Il fuso orario predefinito è UTC
.
Per alcuni fusi orari, l'ora legale può causare l'esecuzione o la mancata esecuzione dei job in modo imprevisto. Questo perché Cloud Scheduler viene eseguito in base all'ora dell'orologio. Nei casi in cui un'ora può verificarsi due volte (ad esempio quando gli orologi vengono spostati indietro) e il tuo job è pianificato in questo orario, il job pianificato potrebbe presentare anomalie di esecuzione.
Se il tuo lavoro richiede una cadenza molto specifica, ti consigliamo di scegliere un fuso orario che non osservi l'ora legale. In particolare, per evitare completamente il problema, è consigliabile utilizzare il fuso orario UTC per Cloud Scheduler.
Formato del job alternativo
Puoi utilizzare un formato di specifica dell'ora più leggibile, noto come groc, che fornisce un'alternativa alle espressioni cron.
Tieni presente che quando specifichi una pianificazione dei job utilizzando groc, devi utilizzare gcloud CLI o effettuare una richiesta diretta all'API Cloud Scheduler.
Ad esempio, alcuni eventi ricorrenti potrebbero essere difficili da specificare utilizzando cron, come "il terzo martedì di ogni mese". In questi casi, puoi invece utilizzare costrutti come i seguenti esempi:
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
Per ulteriori informazioni sulla sintassi, vedi Definizione della pianificazione cron job.