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 que o job seja executado diversas vezes por dia ou em dias e meses determinados. Embora não recomendemos mais o uso, a programação de um
job criando um cron.yaml arquivo
ainda é compatível com jobs atuais.
O Cloud Scheduler também oferece suporte à programação de jobs usando um formato mais legível. Para mais informações, consulte Formato de job alternativo neste documento.
Formato de cron job
Você pode usar o Google Cloud console, a Google Cloud CLI, ou a API REST do Cloud Scheduler para definir sua programação.
Uma programação é definida usando o formato de string unix-cron (* * * * *), que é um 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-12 (ou JAN a DEZ) |
| Dia da semana | 0-6 (ou DOM a SÁB; ou 7 para domingo) |
Minuto:indica quantos minutos após o início da hora o job é executado. Por exemplo, se o minuto estiver definido como
0, o job será executado no início da hora (porque são 0 minutos após a hora). Portanto, se a hora for 8h, o job será executado às 8h.Hora:indica quantas horas após a meia-noite o job é executado (arredondado para a hora mais próxima, porque os minutos restantes são indicados no campo
minute). Meia-noite é0e meio-dia é12. Por exemplo, se a hora estiver definida como0, o job será executado na hora da meia-noite (porque são 0 horas após a meia-noite).Dia do mês:indica a data do mês. Por exemplo,
1para o primeiro dia do mês. O Cloud Scheduler não oferece suporte aLpara indicar o último dia do mês.Mês:indica o mês. Especifique o número do mês ou as três primeiras letras do nome do mês em maiúsculas. Por exemplo,
1para janeiro ou, equivalentemente,JAN.Dia da semana:indica o dia da semana. Por exemplo, segunda-feira é
1e terça-feira é2.0ou7podem indicar domingo. Especifique o dia da semana por número ou pelas três primeiras letras do nome do dia da semana em maiúsculas (por exemplo,SUNpara domingo).- Esse campo é avaliado como um
ORinclusivo com oday of the monthcampo, a menos que um desses campos seja marcado como irrestrito pelo asterisco (*). Por exemplo, se o dia do mês estiver definido como1e o dia da semana estiver definido 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 for irrestrito (definido como*), o job será executado apenas no primeiro dia do mês.
- Esse campo é avaliado como um
Correspondência de todos os valores
Para corresponder a todos os valores de um campo, use o asterisco: *. Quando um campo é definido como asterisco, ele corresponde a todos os valores válidos desse campo sempre que as outras condições de campo forem atendidas. Definir um campo como asterisco é
às vezes chamado de deixar o campo irrestrito, porque ele não está
restrito a um valor específico.
Confira dois exemplos em que o campo de minutos é deixado irrestrito:
* 0 1 1 1: o job é executado a cada minuto da hora da meia-noite em 1º de janeiro e nas segundas-feiras.* * * * *: o job é executado a cada minuto (de cada hora, de cada dia do mês, de cada mês, de cada dia da semana, porque cada um desses campos também é irrestrito).
O asterisco é equivalente a um caso especial de um intervalo, onde o
intervalo começa no primeiro valor válido para o campo e termina no último valor
válido para o 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 nomes abreviados 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 precisa vir antes no mês ou na semana do que o segundo valor.
Os exemplos equivalentes a seguir são executados à meia-noite nas segundas, terças, quartas, quintas e sextas-feiras (para todos os meses):
0 0 * * 1-50 0 * * MON-FRI
Correspondência de uma lista
As listas podem conter qualquer valor válido para o campo, incluindo intervalos.
Especifique os valores, separados por uma 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 cinco primeiros minutos de cada meia hora (no início da hora e na meia hora).
Ignorar valores em um intervalo
É possível ignorar valores em um intervalo especificando uma taxa para percorrer
o intervalo. Isso às vezes é chamado de usar uma função de etapa (ou valor ou expressão de taxa de etapa). Para fazer isso, especifique o intervalo, seguido pela barra (/) e a taxa em que você quer ignorar 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 de minuto, hora e dia da semana (domingo) e 1 para os campos de dia do mês e mês.
O valor da etapa não pode ser maior que o maior valor possível para o campo.
A etapa padrão é 1. Portanto, a função de etapa /1 é a mesma que não usar uma função de etapa.
Exemplos de intervalos que usam funções de etapa:
*/2: essa é 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, ele 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, ele corresponde a 1, 3, 5, ... , 11. Para o dia da semana, ele corresponde a 0, 2, 4, 6.0-12/2: essa é uma função de etapa válida para os campos de minutos e horas. Ele 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. A primeira execução é à meia-noite. A última execução é ao meio-dia.
Exemplos de programação
A tabela a seguir mostra alguns exemplos de programações de cron job e a descrição delas:
| Programação | Formato de cron job | Explicação |
|---|---|---|
| A cada minuto | * * * * * |
É executado no minuto. Por exemplo, 9h, 9h01, 9h02 e assim por diante. |
| A cada hora | 0 * * * * |
É executado na hora. Por exemplo, 9h, 10h, 11h e assim por diante. |
| Todos os dias | 0 0 * * * |
É executado às 12h (00h no formato de 24 horas) todos os dias. |
| Todos os dias úteis (seg. a sex.) |
Os seguintes são equivalentes:
|
É executado às 12h (00h no formato de 24 horas) nas segundas, terças, quartas, quintas e sextas-feiras. |
| Toda semana | Os seguintes são equivalentes:
|
É executado aos domingos às 12h (00h no formato de 24 horas). |
| Todo mês | 0 0 1 * * |
É executado às 12h (00h no formato de 24 horas) no primeiro dia do mês. |
| Todo trimestre | Os seguintes são equivalentes:
|
É executado às 12h (00h no formato de 24 horas) no primeiro dia do trimestre, para uma programação trimestral padrão: 1º de janeiro, 1º de abril, 1º de julho 1º de outubro. |
| Todo ano | Os seguintes são equivalentes:
|
É executado às 12h (00h no formato de 24 horas) no primeiro dia do primeiro mês do ano (1º de janeiro). |
Fuso horário
Você pode selecionar o fuso horário para avaliar a programação no
Google Cloud console (na página Criar um job, selecione um Fuso horário na
lista) ou usando o flag gcloud
--time-zone ao
criar o job.
O valor desse campo precisa ser a abreviação do fuso horário usada 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 sejam executados inesperadamente. Isso ocorre porque o Cloud Scheduler é executado no horário normal. 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 job exigir uma cadência muito específica, considere a escolha de 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.
Formato de job alternativo
É possível usar um formato de especificação de tempo mais legível, conhecido como groc, que oferece uma alternativa às expressões cron.
Ao especificar uma programação de job usando o groc, é necessário usar a CLI gcloud ou fazer uma solicitação direta à API Cloud Scheduler.
Por exemplo, alguns eventos recorrentes podem ser difíceis de especificar usando o cron, como "terceira terça-feira de cada mês" ou "quinzenal" (a cada 336 horas). Nesses casos, você pode usar construções como os exemplos a seguir:
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
Para mais informações sobre a sintaxe, consulte Definir a programação do cron job.