Formato e fuso orario del cron job

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

Formato cron job

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

Una pianificazione viene definita utilizzando il formato di stringa unix-cron (* * * * *), che insieme di cinque campi in una riga, che indicano quando deve essere eseguito il job.

I campi temporali hanno i seguenti formati e valori possibili e devono rispettare 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 JAN a DEC)
Giorno della settimana 0-6 (o da SUN a SAT; o 7 per la domenica)
  • Minuto: indica quanto oltre l'ora di esecuzione del job, in minuti. Ad esempio, se il minuto è impostato su 0, il job viene eseguito parte superiore dell'ora (perché è 0 minuti dopo l'ora). Quindi se l'ora è le 08:00, il job viene eseguito alle 08:00.

  • Ora: indica quanto, oltre la mezzanotte, viene eseguito il job, in ore (valore arrotondato per difetto all'ora più vicina, in quanto i minuti rimanenti sono indicati nel campo minute). La mezzanotte è 0 e mezzogiorno è 12. Ad esempio, se l'ora è impostata su 0, il job viene eseguito nella mezzanotte (perché è 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 Supporta L per indicare l'ultimo giorno del mese.

  • Mese:indica il mese. Specifica il numero del mese o i primi tre lettere maiuscole del nome del mese. Ad esempio, 1 per gennaio oppure in modo equivalente, JAN.

  • Giorno della settimana: indica il giorno della settimana. Lunedì è 1, martedì è 2 e così via. 0o 7 può indicare domenica. Specifica il giorno di la settimana per numero o per le prime tre lettere del nome del giorno della settimana in maiuscolo (ad esempio SUN per domenica).

    • Questo campo è valutato come un OR inclusivo con day of the month campo, a meno che uno di questi campi sia contrassegnato come non limitato dal asterisco (*). Ad esempio, se il giorno del mese è impostato su 1 e il giorno della settimana è impostato su SAT, il job viene eseguito il primo giorno mese e ogni sabato del mese, anche se il primo giorno non è un sabato. Se il giorno della settimana non è soggetto a limitazioni (imposta a *), il job viene eseguito solo il primo giorno del mese.

Tutti i valori corrispondenti

Per trovare la corrispondenza di tutti i valori di un campo, utilizza l'asterisco: *. Se un campo è impostato su l'asterisco, il campo corrisponde a tutti i valori validi per quel campo ogni volta che siano soddisfatte le altre condizioni dei campi. L'impostazione di un campo sull'asterisco è a volte equivale a lasciare il campo unrestricted (senza restrizioni), perché non è limitati a un valore specifico.

Ecco due esempi in cui il campo dei minuti non viene limitato:

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

L'asterisco equivale a un caso speciale di un intervallo, in cui inizia al primo valore valido per il campo e termina all'ultimo valore valido valore del campo (ad esempio, 0-59 per il campo dei minuti).

Corrispondenza di un intervallo

Per trovare una corrispondenza con un intervallo di valori, specifica i valori di inizio e fine, separati da un Trattino (-). Non includere spazi nell'intervallo. Gli intervalli sono inclusi. La il primo numero deve essere inferiore al secondo. Se utilizzi abbreviazione nomi del mese o del giorno della settimana (ad es. JAN anziché 1 per il primo mese dell'anno), il primo valore deve essere antecedente al mese o alla settimana rispetto il secondo valore.

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 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 nel dall'elenco di lettura.

Esempi:

  • 0 0,12 * * *: il job viene eseguito a mezzanotte e mezzogiorno.
  • 0-5,30-35 * * * *: il job viene eseguito in ciascuno dei primi cinque minuti di ogni mezz'ora (sopra l'ora e a mezz'ora).

I valori in un intervallo vengono ignorati.

Puoi saltare i valori in un intervallo specificando la velocità a cui andare attraverso l'intervallo. Questo sistema a volte è indicato come l'utilizzo di una funzione step (o value o un'espressione tariffaria). Per farlo, specifica l'intervallo, seguito dal barra obliqua (/) e la frequenza con cui vuoi saltare l'intervallo.

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

Il valore del passaggio non può essere superiore al valore più grande possibile per il campo. Il passaggio predefinito è 1, quindi la funzione step /1 è la stessa che non utilizzare una funzione step.

Intervalli di esempio che utilizzano le funzioni di passaggio:

  • */2: questa è una funzione 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 al giorno del mese, corrisponde a 1, 3, 5, ... , 31 (per un mese con 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 passaggio valida per i campi dei minuti e delle ore. it corrisponde a 0, 2, 4, ... , 12.

Esempi di programmazioni che utilizzano le funzioni di passaggio:

  • */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 esecuzione è a mezzogiorno.

Esempi di pianificazioni

La tabella seguente mostra alcuni esempi di pianificazioni cron job e la relativa descrizione:

Pianificazione Formato cron job Spiegazione
Ogni minuto * * * * * Viene eseguito in base al minuto. Ad esempio, 9:00, 9:01, :02 AM e così via.
Ogni ora 0 * * * * Viene eseguito all'ora. Ad esempio, 9:00, 10:00, 11:00 e così via. attiva.
Ogni giorno 0 0 * * * Viene eseguito alle 00:00 (00:00 nel formato 24 ore) tutti i giorni.
Ogni giorno feriale
(lun-ven)
I seguenti valori sono equivalenti:
  • 0 0 * * 1-5
  • 0 0 * * MON-FRI
Viene eseguito alle 00:00 (00:00 nel 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 (00:00 nel 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 00:00 (00:00 nel formato 24 ore) del primo giorno del trimestre, per una pianificazione trimestrale standard: 1° gennaio, 1° aprile e luglio 1 e 1° ottobre.
Ogni anno I seguenti valori sono equivalenti:
  • 0 0 1 1 *
  • 0 0 1 JAN *
Viene eseguito alle 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 valutare la pianificazione nel Console Google Cloud (nella pagina Crea un job, seleziona un Fuso orario da dell'elenco) o tramite gcloud --time-zone quando per creare il job.

Il valore di questo campo deve essere l'abbreviazione del fuso orario utilizzata nella tz database. 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 sulla base nel tempo. Nei casi in cui un'ora può essere ripetuta due volte (come nel caso in cui l'orologio scorra indietro) e il job è pianificato in questo momento, il job programmato potrebbe osservare le anomalie di esecuzione.

Se il tuo lavoro richiede una cadenza molto specifica, potresti prendere in considerazione scegliere un fuso orario che non osserva l'ora legale. In particolare, Il fuso orario UTC è consigliato per Cloud Scheduler per evitare il problema completamente.