§

Introduza uma expressão cron ou selecione um atalho abaixo.

Atalhos rápidos:
§

Próximas 10 execuções

cron

O agendamento em linguagem natural aparece aqui...

    §

    Construtor de expressões

    Equipas de desenvolvimento portuguesas e brasileiras encontram a sintaxe cron em todas as camadas da stack: o AWS EventBridge Scheduler aceita-a para acionar funções Lambda, os recursos Kubernetes CronJob usam o mesmo formato de cinco campos em clusters EKS e GKE, e o GitHub Actions lê-a diretamente de `.github/workflows/*.yml`. O problema é que nenhuma dessas plataformas concorda nos limites. O EventBridge acrescenta um sexto campo para o ano e exige `?` em vez de `*` num dos campos de dia. O Kubernetes corre em UTC a menos que se defina explicitamente `spec.timeZone`. O GitHub Actions corre em UTC, sem exceção, sem possibilidade de substituição. Esta ferramenta analisa qualquer variante que cole, mostra as próximas dez execuções na zona IANA que escolher e permite construir uma nova expressão campo a campo para verificar o agendamento antes de o enviar para produção.

    O que é uma expressão cron?

    Uma expressão cron é uma string de agendamento compacta que diz a um agendador de tarefas exatamente quando executar uma tarefa. O formato nasceu em 1975 no daemon Unix V7 cron e praticamente não mudou desde então — a mesma gramática de cinco campos aparece hoje em Kubernetes CronJobs, AWS EventBridge, fluxos de trabalho do GitHub Actions, Google Cloud Scheduler, GitLab CI, pipelines Jenkins e no binário crontab incluído em todas as distribuições Linux. A gramática condensa muito significado em cerca de treze caracteres, daí que um parser que converta isso para linguagem natural seja a diferença entre uma publicação confiante e um rollback às 3h da manhã.

    Como funciona uma expressão cron?

    Uma expressão cron padrão tem cinco campos separados por espaços que definem em conjunto um agendamento repetido. O motor compara o relógio atual com a expressão a cada minuto e executa a tarefa quando os cinco campos coincidem. Os campos, da esquerda para a direita:

    1. Minuto (0–59). Em que minuto da hora a tarefa é executada. 0 significa no início da hora, 30 significa às e meia, */5 significa de cinco em cinco minutos (00, 05, 10, ...), e 15,45 significa ao quarto de hora e a três quartos.
    2. Hora (0–23). A hora do dia no relógio de 24 horas. 0 é meia-noite, 9 são as 9h, 17 são as 17h. Intervalos (9-17 para horário comercial) e valores de passo (*/2 para cada duas horas) funcionam da mesma forma que para os minutos.
    3. Dia do mês (1–31). O dia do calendário em que executar. 1 é o primeiro do mês, * é todos os dias, 1,15 é o primeiro e o décimo quinto. Cuidado com 31 — ignora silenciosamente os meses que não têm 31 dias.
    4. Mês (1–12 ou JAN–DEZ). Em que meses executar. * é todos os meses, 1,7 é janeiro e julho, 1-3 é só o primeiro trimestre. Os nomes de mês de três letras são insensíveis a maiúsculas na maioria das implementações.
    5. Dia da semana (0–7, em que tanto 0 como 7 significam domingo). Restringe a execução a dias da semana específicos. 1-5 é segunda a sexta, 0,6 é o fim de semana, MON-FRI funciona na maioria dos parsers. Quando tanto o dia do mês como o dia da semana têm valores específicos, o cron clássico executa em qualquer correspondência (OR lógico), o que surpreende as pessoas sempre.

    Por que usar um parser de expressão cron?

    • Identifique a leitura errada silenciosa antes de publicar. A expressão `0 2 */3 * *` executa às 2h de madrugada a cada três dias, não a cada três minutos — cole-a aqui e verá isso em linguagem natural antes de ir para produção.
    • A maioria dos agendadores em nuvem funciona em UTC por padrão. Pré-visualizar as próximas dez execuções no seu fuso local revela o desfasamento de uma hora por hora de verão antes que alguém seja acordado às 3h.
    • Atalhos como `@daily`, `@weekly` e `@monthly` são convenientes mas ambíguos. O parser mostra o formulário de cinco campos subjacente para que saiba exatamente o que foi agendado.
    • O construtor campo a campo permite compor um agendamento uma coluna de cada vez e ver a descrição em linguagem natural atualizar em tempo real, o que é muito mais rápido do que reler a página do manual cron pela décima vez.

    Onde são usadas expressões cron?

    A sintaxe cron aparece em qualquer lugar onde uma tarefa precise de se repetir num relógio. Três das superfícies mais comuns, com os problemas exatos pelos quais cada uma é conhecida:

    • Agendamentos de backup. A entrada clássica `crontab -e` que faz dump de uma base de dados para S3 às 2h da madrugada, ou que roda um arquivo `pg_dump` no primeiro dia de cada mês. Uma linha como `0 2 * * * /usr/local/bin/backup.sh` foi publicada em mais servidores Linux do que qualquer outra linha de cron na história. Acerte no minuto e na hora, redirecione o stderr para algum lugar durável, e substituiu uma checklist manual por um script que funciona sozinho.
    • Gatilhos `schedule` do GitHub Actions. A chave `on.schedule.cron` em `.github/workflows/*.yml` aceita cron padrão de cinco campos, mas a tarefa sempre corre em UTC e o GitHub ignora silenciosamente uma execução se a fila de executores estiver ocupada. Padrão comum: `cron: '0 9 * * 1-5'` para enviar um resumo de segunda a sexta às 9h UTC. Pré-visualize aqui no seu fuso local para não prometer um resumo às 9h de Lisboa que na verdade chega às 10h em horário de verão.
    • AWS EventBridge Scheduler. As expressões cron do EventBridge têm um sexto campo para o ano e requerem `?` em vez de `*` no campo de dia do mês ou dia da semana — `cron(0 9 ? * MON-FRI *)` é a tradução EventBridge do cron padrão de dias úteis às 9h. Usado para invocações Lambda agendadas, execuções de tarefas ECS e arranques de máquinas de estado Step Functions; o desalinhamento com a sintaxe cron clássica é a principal fonte de erros `ValidationException` em publicações CloudFormation.

    Como é uma expressão cron real?

    Tome 0 9 * * 1-5 — executa às 9h00, todos os dias úteis. Lendo os campos da esquerda para a direita: 0 é o minuto zero da hora, 9 são as 9h no relógio de 24 horas, * no dia do mês significa todos os dias do calendário, * no mês significa todos os meses, e 1-5 no dia da semana restringe a execução de segunda a sexta (onde 1 = segunda na numeração cron padrão). Cole isso na entrada acima e o parser confirma Às 09:00, de segunda a sexta com as próximas dez datas renderizadas na zona IANA que selecionar. A mesma intenção em sintaxe AWS EventBridge é cron(0 9 ? * MON-FRI *) — note o campo do ano no final e o ? onde o cron padrão usaria *. A mesma intenção como expressão Quartz (seis campos com segundos iniciais) é 0 0 9 ? * MON-FRI. Três plataformas diferentes, três formas superficiais diferentes, um agendamento subjacente.

    As expressões cron são implacáveis exatamente de uma forma: um erro de digitação produz um agendamento sintaticamente válido que executa na hora errada, sem nenhum erro para detetar na revisão de código. Ler `0 0 1 * *` e saber que corre à meia-noite no primeiro de cada mês, não a 1 de janeiro, exige prática. O parser acima transforma essa prática numa verificação de dez segundos — cole a expressão, leia o texto em português, examine as próximas dez execuções no seu fuso local, e publique o YAML sabendo que a linha cron realmente faz o que a mensagem de commit diz que faz.

    Qual é a diferença entre cron de 5 e 6 campos?

    O cron de cinco campos é a gramática Unix clássica com resolução de um minuto. O cron de seis campos adiciona uma coluna de segundos inicial para agendamento de sub-minuto — usado pelo Quartz e pelo @Scheduled do Spring. O AWS EventBridge também usa seis campos, mas a sua coluna extra é um ano final, não segundos.

    O que significam @hourly, @daily e @weekly?

    Atalhos do Vixie-cron introduzidos em 1987. @hourly = 0 * * * *, @daily = 0 0 * * *, @weekly = 0 0 * * 0, @monthly = 0 0 1 * *, @yearly = 0 0 1 1 *. @reboot executa uma vez no arranque. O GitHub Actions e o EventBridge rejeitam estes atalhos.

    Domingo é o dia 0 ou o dia 7 em cron?

    Ambos, no cron Vixie clássico — 0 e 7 são aceites para que intervalos como 5-7 se leiam naturalmente como sexta a domingo. Segunda é sempre 1, sábado é sempre 6. O Quartz e o AWS EventBridge usam uma convenção diferente: 1-7 com domingo como 1. Consulte a documentação da plataforma antes de assumir.

    Como é que o cron lida com a mudança de hora?

    Depende do fuso horário do motor. Em UTC (o padrão no EventBridge, Kubernetes e GitHub Actions) a mudança de hora não existe. Num fuso com horário de verão, o cron Vixie clássico ignora tarefas durante o avanço da hora da primavera e executa-as duas vezes durante o recuo do outono; os temporizadores systemd executam exatamente uma vez.