Gerador de expressão cron: monte, entenda, veja as próximas execuções | We.Inc
Monte um agendamento cron com menus suspensos ou cole um para lê-lo em português claro. Veja as próximas 10 execuções no seu fuso horário e copie para crontab, GitHub Actions, Vercel ou Kubernetes.
Gerador de expressão cron
Uma expressão cron tem cinco campos separados por espaços: minuto, hora, dia do mês, mês e dia da semana. */5 * * * * roda a cada cinco minutos; 0 9 * * 1-5 roda às 9:00 nos dias úteis. Monte uma com os menus ou cole a sua para vê-la explicada, com os horários das próximas dez execuções.
Os cinco campos, em ordem
Campo
Valores permitidos
Minuto
Hora
Dia do mês
Mês
1-12 ou JAN-DEC
Dia da semana
0-7 ou SUN-SAT (0 e 7 são domingo)
Escolha os valores campo a campo ou cole uma expressão. A ferramenta explica em português claro, aponta erros, lista as próximas dez execuções em qualquer fuso horário e entrega o mesmo agendamento pronto para crontab, GitHub Actions, Vercel e Kubernetes.
Digite ou cole uma expressão na caixa, ou clique em um dos modelos prontos. Atalhos como @daily e @weekly também funcionam.
Ou use o construtor: cada um dos cinco campos permite escolher todos, a cada N, valores específicos ou um intervalo. A expressão é atualizada conforme você escolhe.
Leia a linha em português claro para conferir se o agendamento diz o que você queria. Erros, como um minuto 61 ou um campo faltando, são identificados.
Escolha um fuso horário para ver as próximas dez execuções como aconteceriam lá, incluindo as mudanças de horário de verão.
Copie o agendamento no formato que a sua plataforma espera. Tudo roda no seu navegador.
A maioria dos agendadores hospedados, incluindo GitHub Actions e os cron jobs da Vercel, lê o agendamento em UTC. Converta o seu horário local antes de salvar, ou a tarefa vai rodar horas antes ou depois.
Se você preencher os campos de dia do mês e de dia da semana ao mesmo tempo, o cron roda a tarefa quando qualquer um deles corresponde, não quando os dois correspondem. 0 0 13 * 5 roda em todo dia 13 e em toda sexta-feira, não só na sexta-feira 13.
Escolha um minuto quebrado, como 17 3 * * *, em vez de 0 0 * * *. Muitíssimas tarefas são agendadas para a hora cheia, então serviços compartilhados e runners hospedados ficam mais ocupados nesse momento.
Tarefas agendadas entre 01:00 e 03:00 no horário local podem ser puladas ou rodar duas vezes quando o relógio muda. Agende tarefas críticas em UTC ou fora dessa janela.
O GitHub Actions não roda agendamentos com frequência maior que a cada 5 minutos e pode iniciá-los com atraso quando os runners estão ocupados, então não conte com horários exatos lá.
Perguntas frequentes
Como escrevo um cron job que roda a cada 5 minutos?
Use */5 * * * *. O */5 no campo de minuto significa a cada cinco minutos a partir do 0, então roda em :00, :05, :10 e assim por diante. Para a cada 10 ou 15 minutos, troque o número por 10 ou 15.
O que significa */ no cron?
A barra define um passo. */15 no campo de minuto significa a cada 15 minutos dentro da hora: 0, 15, 30 e 45. Você também pode usar passos dentro de um intervalo: 9-17/2 no campo de hora significa 9, 11, 13, 15 e 17.
Domingo é 0 ou 7 no cron?
Os dois. O cron padrão aceita 0 e 7 para domingo, depois 1 para segunda-feira até 6 para sábado. Nomes de dias como SUN e MON evitam a dúvida de vez.
Por que a minha expressão tem seis ou sete campos?
Quartz, Spring e alguns agendadores na nuvem adicionam um campo de segundos no início e, às vezes, um de ano no final. O crontab padrão, o GitHub Actions, a Vercel e o Kubernetes usam cinco campos. Esta ferramenta lê o formato de cinco campos; remova o campo de segundos para conferir o resto.
Qual fuso horário o cron usa?
Um crontab usa o fuso horário do servidor em que roda, a menos que o sistema suporte uma configuração CRON_TZ ou TZ. O GitHub Actions e a Vercel usam UTC. Os CronJobs do Kubernetes usam o fuso horário do controller, a menos que você defina o campo timeZone na spec.
Como ler uma expressão cron
Leia os campos da esquerda para a direita: neste minuto, desta hora, neste dia do mês, neste mês, neste dia da semana. Um asterisco significa qualquer valor. Então 30 6 * * 1 se lê: no minuto 30 da hora 6, em qualquer dia do mês, em qualquer mês, na segunda-feira. Ou seja, 06:30 toda segunda-feira.
Cada campo pode ter um único valor, uma lista (1,15), um intervalo (1-5), um passo (*/10) ou uma combinação (0-30/10,45). O construtor desta página escreve isso para você, e a linha de descrição lê o resultado de volta para você conferir.
A armadilha do dia do mês e do dia da semana
Quando os dois campos de dia têm um valor diferente de asterisco, o cron os trata como alternativas. Uma tarefa definida como 0 0 1 * 1 roda no primeiro dia do mês e em toda segunda-feira. Isso surpreende muita gente que esperava a primeira segunda-feira do mês.
O cron não consegue expressar a primeira segunda-feira diretamente. A solução de costume é agendar 0 0 1-7 * * e fazer o script encerrar a menos que o dia seja segunda-feira, ou usar um agendador com sintaxe própria para isso.
Onde o seu agendamento vai rodar
Todas as plataformas abaixo usam os mesmos cinco campos, mas os envolvem de formas diferentes e algumas adicionam regras próprias. Copie da ferramenta o trecho para a sua e depois confira na documentação dela os limites de frequência das tarefas no seu plano.
A cada 5 minutos
A cada 15 minutos
A cada hora, na hora cheia
A cada 6 horas
Todo dia à meia-noite
Dias úteis às 9:00
Sextas-feiras às 17:30
Domingos às 3:00
Primeiro dia de cada mês
Primeiro dia de cada trimestre às 8:00
A cada 10 minutos em horário comercial
Uma vez por ano, 1º de janeiro
O que cada caractere significa em um campo cron
Símbolo
Significado
Exemplo
Leitura
Todos os valores
* no campo de hora
Toda hora
Uma lista de valores
1,15 no campo de dia
No dia 1 e no dia 15
Um intervalo
1-5 no campo de dia da semana
De segunda a sexta
Um passo dentro de um intervalo
*/10 no campo de minuto
Minutos 0, 10, 20, 30, 40, 50
JAN-DEC
Nomes dos meses (maiúsculas ou minúsculas)
De junho a agosto
SUN-SAT
Nomes dos dias; 0 e 7 são ambos domingo
sat,sun
Fins de semana
@daily
Atalho para 0 0 * * *
@hourly, @weekly, @monthly, @yearly
Igual ao formato de cinco campos
Minuto
Hora
Dia do mês
Mês
Dia da semana
Jan
Mar
Abr
Mai
Jun
Jul
Ago
Set
Out
Nov
Dom
Seg
Ter
Qua
Qui
Sex
Sáb
Modo de {field}
Todos
A cada N
Específicos
Intervalo
Passo de {field}
Valores de {field}, separados por vírgula
{field} de
{field} até
Seu agendamento
Expressão cron
Copiar expressão
Monte campo a campo
Alterar qualquer campo abaixo substitui a expressão acima.
Próximas 10 execuções
Fuso horário
Carregando o seu relógio…
Nenhuma execução nos próximos cinco anos. Confira os campos de dia e mês, por exemplo 31 em um mês que tem 30 dias.
Corrija a expressão para ver os horários de execução.
Roda com menos de 5 minutos de intervalo. O GitHub Actions não agenda com essa frequência.
Copie para a sua plataforma
Copiar trecho
Adicione a linha com crontab -e. Ela roda no fuso horário do servidor; troque o comando pelo seu.
Vai em um arquivo de workflow dentro de .github/workflows. O GitHub lê o agendamento em UTC.
A Vercel lê o agendamento em UTC e chama o caminho informado com uma requisição GET.
O campo timeZone define em qual fuso o agendamento é lido. Troque a imagem e o comando pela sua tarefa.