Formato e fuso orario del cron job

I cron job vengono pianificati a intervalli ricorrenti, specificati utilizzando un formato basato su unix-cron. Puoi definire una pianificazione in modo che il job venga eseguito più volte al giorno oppure in giorni e mesi specifici. Anche se non ne consigliamo più l'utilizzo, la precedente sintassi cron di App Engine è ancora supportata per i job esistenti.

Formato del cron job

Puoi utilizzare la console Google Cloud, Google Cloud CLI o l'API REST Cloud Scheduler per impostare la pianificazione.

Una pianificazione viene definita utilizzando il formato di stringa unix-cron (* * * * *), che è un insieme di cinque campi in una riga che indica 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 da DOM a SAB; o 7 per la domenica)
  • Minuti:indica quanto tempo è trascorso dall'inizio dell'ora in cui viene eseguito il job, in minuti. Ad esempio, se il minuto è impostato su 0, il job viene eseguito all'inizio dell'ora (perché sono trascorsi 0 minuti dall'ora). Pertanto, se l'ora è 08:00, il job viene eseguito alle 08:00.

  • Ora:indica il numero di ore dopo la mezzanotte in cui viene eseguito il job (arrotondato per difetto all'ora più vicina, perché i minuti rimanenti sono indicati nel campo minute). Mezzanotte è alle 0 e mezzogiorno alle 12. Ad esempio, se l'ora è impostata su 0, il job viene eseguito nell'ora di mezzanotte (poiché è 0 ore dopo mezzanotte).

  • Giorno del mese:indica la data di calendario del mese. Ad esempio,1 per il primo giorno del mese. Cloud Scheduler non supporta L come 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, il lunedì è 1 e il martedì è 2. 0o 7 possono indicare la domenica. Specifica il giorno della settimana tramite numero o tramite le prime tre lettere del nome del giorno in maiuscolo (ad esempio SUN per domenica).

    • Questo campo viene valutato come OR inclusivo con il campo day of the month, a meno che uno di questi campi non sia contrassegnato come senza restrizioni dall'asterisco (*). Ad esempio, se il giorno del mese è impostato su 1 e il giorno della settimana su SAT, 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 è limitato (impostato su *), il job viene eseguito solo il primo giorno del mese.

Corrispondenza con tutti i valori

Per trovare tutte le corrispondenze per un campo, utilizza l'asterisco: *. Quando un campo è impostato sull'asterisco, 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 è talvolta indicata come senza restrizioni, perché non è limitata a un valore specifico.

Di seguito sono riportati due esempi in cui il campo dei minuti non è limitato:

  • * 0 1 1 1: il job viene eseguito ogni minuto dell'ora di mezzanotte del 1° gennaio e dei lunedì.
  • * * * * *: il job viene eseguito ogni minuto (di ogni ora, di ogni giorno del mese, di ogni mese, di ogni giorno della settimana, perché anche ciascuno di questi campi è senza restrizioni).

L'asterisco è equivalente a un caso speciale di un intervallo, in cui l'intervallo inizia dal primo valore valido per il campo e termina con l'ultimo valore valido per il campo (ad es. 0-59 per il campo dei minuti).

Corrispondenza a 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 nel mese o nella settimana.

I seguenti esempi equivalenti vengono eseguiti a mezzanotte di lunedì, martedì, mercoledì, giovedì e venerdì (per tutti i mesi):

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

Corrispondenza a 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 in ciascuno dei primi cinque minuti di ogni mezz'ora (all'inizio e alla metà dell'ora).

Saltare i valori in un intervallo

Puoi saltare i valori in un intervallo specificando una frequenza con cui esaminare l'intervallo. A volte viene definita come l'utilizzo di una funzione di incremento (o valore di incremento o espressione di tariffa). A questo scopo, specifica l'intervallo, seguito dalla barra verticale (/) e dalla frequenza con cui vuoi saltare l'intervallo.

Puoi utilizzare l'asterisco (*) per indicare l'intervallo di tutti i valori per il campo. Quando utilizzi l'asterisco, il primo valore dell'intervallo è 0 per i campi minuto, ora e giorno della settimana (domenica) e 1 per i campi giorno del mese e mese.

Il valore del passaggio non può essere superiore al valore massimo possibile per il campo. Il valore predefinito per il parametro step è 1, pertanto la funzione step /1 equivale a non utilizzare affatto una funzione step.

Esempi di intervalli che utilizzano funzioni a gradino:

  • */2: questa è una funzione di passo 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 minuto e ora. Abbina 0, 2, 4, ... , 12.

Pianificazioni di esempio che utilizzano funzioni a gradino:

  • */2 * * * *: il job viene eseguito ogni due minuti.

  • 0 0-12/2 * * *: il job viene eseguito ogni due ore, a ora in punto. La prima esecuzione avviene a mezzanotte. L'ultima esecuzione è a mezzogiorno.

Pianificazioni di esempio

La tabella seguente mostra alcune pianificazioni di job cron di esempio e la relativa descrizione:

Pianificazione Formato del cron job Spiegazione
Ogni minuto * * * * * Viene eseguito ogni minuto. Ad esempio, 9:00, 9:01, 9:02 e così via.
Ogni ora 0 * * * * Viene eseguita ogni ora. Ad esempio, 9:00, 10:00, 11:00 e così via.
Ogni giorno 0 0 * * * Viene eseguito ogni giorno alle 00:00 (formato 24 ore).
Tutti i giorni feriali
(lun-ven)
I seguenti valori sono equivalenti:
  • 0 0 * * 1-5
  • 0 0 * * MON-FRI
Viene eseguito alle 00:00 (formato 24 ore) di lunedì, martedì, mercoledì, giovedì e venerdì.
Ogni settimana I seguenti valori sono equivalenti:
  • 0 0 * * 0
  • 0 0 * * 7
  • 0 0 * * SUN
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 I seguenti valori sono equivalenti:
  • 0 0 1 1,4,7,10 *
  • 0 0 1 JAN,APR,JUL,OCT *
Viene eseguito alle ore 00:00 (00:00 nel formato 24 ore) del primo giorno del trimestre, per una pianificazione trimestrale standard: 1° gennaio, 1° aprile, 1° luglio e 1° ottobre.
Ogni anno I seguenti valori sono equivalenti:
  • 0 0 1 1 *
  • 0 0 1 JAN *
Viene eseguito alle ore 00:00 (00:00 nel formato 24 ore) del primo giorno del primo mese dell'anno (1° gennaio).

Fuso orario

Puoi selezionare il fuso orario per la valutazione della pianificazione nella console Google 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 accade perché Cloud Scheduler viene eseguito in base al tempo reale. Nei casi in cui un orario può verificarsi due volte (ad esempio quando gli orologi vanno indietro) e il job è pianificato in questo momento, il job pianificato potrebbe registrare anomalie di esecuzione.

Se il tuo job richiede una cadenza molto specifica, ti consigliamo di scegliere un fuso orario che non osservi l'ora legale. Nello specifico, per evitare completamente il problema, è consigliabile utilizzare UTC per Cloud Scheduler.

Passaggi successivi