Os cron jobs são programados em intervalos recorrentes e especificados usando um formato baseado em unix-cron. É possível definir uma programação para executar o job várias vezes por dia ou em dias e meses específicos. (Embora não recomendemos mais seu uso, a versão A sintaxe do cron do App Engine é ainda é compatível com jobs atuais).
Formato do cron job
Você pode usar o console do Google Cloud, a CLI do Google Cloud ou a API REST do Cloud Scheduler para definir sua programação.
Um cronograma é definido usando o formato de string unix-cron (* * * * *
), que é uma
conjunto de cinco campos em uma linha, indicando quando o job deve ser executado.
Os campos de hora têm o formato e os valores possíveis a seguir e precisam seguir esta ordem:
|------------------------------- 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 | Valores válidos |
---|---|
Minuto | 0-59 |
Hora | 0-23 |
dia do mês | 1-31 |
Mês | 1 a 12 (ou JAN a DEC) |
Dia da semana | 0-6 (ou DOM a SÁB; ou 7 para domingo) |
Minuto: indica quanto tempo além do topo da hora seu job é executado, em minutos. Por exemplo, se o minuto for definido como
0
, o job será executado no início da hora (porque é 0 minuto após a hora). Portanto, se a hora for 8h, o job será executado às 8h.Hora: indica quanto tempo passa da meia-noite em que o job é executado. (arredondado para a hora mais próxima, porque os minutos restantes são indicados no campo
minute
). Meia-noite é0
e meio-dia é12
. Por exemplo, se a hora for definida como0
, o job será executado à meia-noite (porque é 0 horas após a meia-noite).Dia do mês: indica a data do mês. Por exemplo,
1
para o primeiro dia do mês. O Cloud Scheduler não aceitaL
para indicar o último dia do mês.Mês:indica o mês. Especifique o número do mês ou os três primeiros letras maiúsculas do nome do mês. Por exemplo,
1
para janeiro ou equivalente,JAN
.Dia da semana:indica o dia da semana. Segunda-feira é
1
, terça-feira é2
e assim por diante.0
ou7
podem indicar domingo. Especifique o dia a semana, seja por número ou pelas três primeiras letras do nome do dia da semana em letras maiúsculas (por exemplo,SUN
para domingo).- Esse campo é avaliado como um
OR
inclusivo com o campoday of the month
, a menos que um desses campos seja marcado como irrestrito pelo asterisco (*
). Por exemplo, se o dia do mês for definido como1
e o dia da semana comoSAT
, o job será executado no primeiro dia do mês e em todos os sábados do mês, mesmo que o primeiro dia do mês não seja um sábado. Se o dia da semana não tiver restrição (definido como*
), o job será executado apenas no primeiro dia do mês.
- Esse campo é avaliado como um
Como fazer a correspondência de todos os valores
Para corresponder a todos os valores de um campo, use o asterisco: *
. Quando um campo é definido como
o asterisco, o campo corresponde a todos os valores válidos para esse campo sempre que a
outras condições de campo sejam atendidas. A definição de um campo como asterisco às vezes é
chamada de deixar o campo irrestrito, porque ele não é
restringido a um valor específico.
Confira dois exemplos em que o campo de minutos não tem restrições:
* 0 1 1 1
: o job é executado a cada minuto da meia-noite no dia 1o de janeiro. e às segundas-feiras.* * * * *
: o job é executado a cada minuto (de cada hora, todos os dias do todos os meses, todos os dias da semana, porque esses campos também é irrestrito).
O asterisco é equivalente a um caso especial de um intervalo, em que o
intervalo começa no primeiro valor válido do campo e termina no último valor
válido do campo (por exemplo, 0-59
para o campo de minutos).
Correspondência de um intervalo
Para corresponder a um intervalo de valores, especifique os valores inicial e final, separados por um
hífen (-
). Não inclua espaços no intervalo. Os intervalos são inclusivos. O
primeiro número precisa ser menor que o segundo. Se você estiver usando abreviações
para o mês ou dia da semana (por exemplo, JAN
em vez de 1
para o primeiro
mês do ano), o primeiro valor deve ser informado no mês ou na semana antes do
o segundo valor.
Os exemplos equivalentes a seguir são executados à meia-noite das segundas, terças-feiras, Quartas, quintas e sextas-feiras (para todos os meses):
0 0 * * 1-5
0 0 * * MON-FRI
Como fazer a correspondência com uma lista
As listas podem conter qualquer valor válido para o campo, incluindo intervalos.
Especifique seus valores separados por vírgula (,
). Não inclua espaços na
lista.
Exemplos:
0 0,12 * * *
: o job é executado à meia-noite e ao meio-dia.0-5,30-35 * * * *
: o job é executado nos primeiros cinco minutos de cada meia hora (no início e no meio da hora).
Como pular valores em um intervalo
Você pode pular valores em um intervalo especificando uma taxa na qual a etapa
ao longo do intervalo. Às vezes, isso é chamado de uso de uma função de etapa (ou
valor de etapa ou expressão de taxa). Para isso, especifique o intervalo, seguido pelo
barra (/
) e a velocidade com que você quer pular o intervalo.
É possível usar o asterisco (*
) para indicar o intervalo de todos os valores do
campo. Quando você usa o asterisco, o primeiro valor no intervalo é: 0 para os campos minuto, hora e dia da semana (domingo) e 1 para os campos dia do mês e mês.
O valor da etapa não pode ser maior do que o maior valor possível do campo.
A etapa padrão é 1, portanto, a função de etapa /1
é o mesmo que não usar uma função de etapa.
Exemplos de intervalos que usam funções de etapa:
*/2
: é uma função de etapa válida para qualquer campo. Para o campo de minutos, ele corresponde a 0, 2, 4, ... , 58. Para a hora, ela corresponde a 0, 2, 4, ... , 22. Para o dia do mês, ele corresponde a 1, 3, 5, ... , 31 (para um mês com 31 dias). Para o mês, corresponde a 1, 3, 5, ... , 11. Para o dia da semana, ele corresponde a 0, 2, 4, 6.0-12/2
: é uma função de etapa válida para os campos de minuto e hora. Ela corresponde a 0, 2, 4, ... , 12.
Exemplos de programações usando funções de etapa:
*/2 * * * *
: o job é executado a cada dois minutos.0 0-12/2 * * *
: o job é executado a cada duas horas, na hora certa. A primeira execução é à meia-noite. A última corrida é ao meio-dia.
Exemplos de programação
A tabela a seguir mostra alguns exemplos de programações de jobs cron e as respectivas descrições:
Programar | Formato do cron job | Explicação |
---|---|---|
A cada minuto | * * * * * |
É executada no minuto. Por exemplo, 9h, 9h01, 9h02 e assim por diante. |
A cada hora | 0 * * * * |
É executado na hora. Por exemplo, 9h, 10h, 11h etc. |
Todos os dias | 0 0 * * * |
É executado à meia-noite (00:00 no formato de 24 horas) todos os dias. |
Todos os dias da semana (seg. a sex.) |
Os seguintes são equivalentes:
|
É executado às 12h (00:00 no formato de 24 horas) às segundas, terças, quartas, quintas e sextas-feiras. |
Toda semana | Os seguintes são equivalentes:
|
É executado aos domingos à 0h (00h no formato de 24 horas). |
Todo mês | 0 0 1 * * |
É executado às 12h (00:00 no formato de 24 horas) no primeiro dia do mês. |
Todo trimestre | Os seguintes são equivalentes:
|
É executado à meia-noite (00:00 no formato de 24 horas) no primeiro dia do trimestre, para a programação trimestral padrão: 1o de janeiro, 1o de abril, 1o de julho 1o e 1o de outubro. |
Todo ano | Os seguintes são equivalentes:
|
É executado à meia-noite (00:00 no formato de 24 horas) no primeiro dia do primeiro mês do ano (1o de janeiro). |
Fuso horário
Você pode selecionar o fuso horário para avaliar a programação no
Console do Google Cloud (na página Criar um job, selecione um Fuso horário da
lista) ou usando a flag gcloud
--time-zone
ao
criar o job.
O valor desse campo precisa ser a abreviação do fuso horário usado no
banco de dados tz.
O fuso horário padrão é UTC
.
Em alguns fusos horários, o horário de verão pode fazer com que os jobs sejam executados ou não inesperadamente. Isso ocorre porque o Cloud Scheduler é executado em um relógio de parede tempo de resposta. Nos casos em que um horário pode ocorrer duas vezes (como no caso de relógios retrocederem) e seu job for agendado nesse momento, ele poderá observar anomalias de execução.
Se o seu trabalho exige uma cadência muito específica, considere escolher um fuso horário que não observe o horário de verão. Especificamente, o UTC é recomendado para o Cloud Scheduler para evitar o problema completamente.