Padroes rapidos:
A cada minuto A cada hora Todo dia meia-noite Dias uteis 9h Todo domingo 1o do mes A cada 15 min Diario 2h Sex 18:30

O Que e uma Expressao Cron?

Uma expressao cron e uma string de cinco campos separados por espacos que define um agendamento para tarefas automatizadas (cron jobs). Originaria do Unix/Linux, o cron agora e amplamente usado em agendadores de nuvem (AWS EventBridge, GitHub Actions, Kubernetes CronJobs, Heroku Scheduler) e frameworks de aplicacao.

Os cinco campos representam: minuto (0-59), hora (0-23), dia do mes (1-31), mes (1-12) e dia da semana (0-7, onde tanto 0 quanto 7 = Domingo).

Referencia de Sintaxe Cron

Cada campo suporta estes caracteres especiais:

  • * — Qualquer valor (curinga). Exemplo: * * * * * executa a cada minuto.
  • , — Separador de lista. Exemplo: 1,3,5 no campo de hora significa 1h, 3h e 5h.
  • - — Intervalo. Exemplo: 1-5 no campo dia-da-semana significa segunda a sexta.
  • / — Passo. Exemplo: */5 no campo de minuto significa a cada 5 minutos.

Como Usar Esta Ferramenta

Digite ou cole sua expressao cron no campo de entrada acima. A ferramenta ira explicar instantaneamente cada campo em linguagem simples, mostrar o agendamento completo em formato legivel e exibir os proximos 5 horarios de execucao com base na data e hora atuais. Use os botoes de padroes rapidos para inserir expressoes comuns.

Exemplos Comuns de Expressoes Cron

  • * * * * * — A cada minuto
  • 0 * * * * — No inicio de cada hora
  • 0 0 * * * — Todo dia a meia-noite
  • 0 9 * * 1-5 — Todo dia util as 9:00
  • 0 0 1 * * — A meia-noite no primeiro dia de cada mes
  • */15 * * * * — A cada 15 minutos
  • 0 2 * * 0 — Todo domingo as 2:00 (comum para backups semanais)
  • 0 8,12,17 * * 1-5 — Tres vezes ao dia em dias uteis (8h, 12h, 17h)

Cron na Infraestrutura Moderna: Além do Básico

Enquanto o daemon cron tradicional do Unix ainda é amplamente utilizado, a infraestrutura moderna evoluiu o agendamento cron para sistemas mais sofisticados. Entender tanto as abordagens tradicionais quanto as modernas ajuda a escolher a ferramenta certa para sua carga de trabalho.

Cron Tradicional vs Agendadores Modernos

  • Unix Cron: Simples, confiável, roda em um único servidor. Melhor para tarefas recorrentes básicas como rotação de logs, backups e scripts de limpeza. Limitações: sem lógica de retry, sem coordenação distribuída, sem monitoramento.
  • Kubernetes CronJobs: Executa containers agendados em um cluster. Suporta políticas de concorrência (Allow, Forbid, Replace), limpeza automática de jobs completados e integração com monitoramento Kubernetes.
  • Agendadores Cloud: AWS EventBridge, Google Cloud Scheduler e Azure Logic Apps fornecem cron gerenciado com retry integrado, filas de dead-letter e controle de acesso baseado em IAM.
  • Filas de Trabalho: Sistemas como Celery Beat (Python), Bull (Node.js) ou Sidekiq-Cron (Ruby) combinam agendamento com pools de workers, fornecendo controle de concorrência, lógica de retry e priorização de jobs.

Armadilhas e Melhores Práticas de Expressões Cron

  • Consciência de Fuso Horário: Cron roda no fuso horário do sistema por padrão. Quando servidores abrangem múltiplos fusos horários, sempre especifique UTC explicitamente e converta na lógica da sua aplicação.
  • Execuções Sobrepostas: Se um job demora mais que o intervalo entre execuções, você pode ter execuções sobrepostas. Use travas de arquivo (flock), travas de banco de dados ou a política de concorrência do seu agendador para prevenir isso.
  • Horário de Verão: Jobs agendados entre 2:00–3:00 AM podem rodar duas vezes ou não rodar durante transições de horário de verão. Agende jobs críticos fora desta janela ou use UTC.
  • A String Especial @reboot: Use @reboot para executar um comando uma vez quando o daemon cron inicia (tipicamente no boot do sistema). Útil para iniciar serviços em background sem systemd.

Perguntas Frequentes sobre Cron

O que significa '* * * * *' no cron?

A expressao * * * * * significa "executar a cada minuto de cada hora de cada dia." Cada asterisco e um curinga que corresponde a todos os valores validos para sua posicao: minuto (0-59), hora (0-23), dia do mes (1-31), mes (1-12) e dia da semana (0-7). E a expressao cron mais permissiva e e comumente usada para tarefas que devem executar frequentemente.

Como executar um cron job a cada 5 minutos?

Use a sintaxe de passo com uma barra: */5 * * * *. O / significa "a cada N", entao */5 no campo de minuto significa a cada 5 minutos — em :00, :05, :10, :15, e assim por diante. Para cada 15 minutos use */15 * * * *. Para minutos especificos como 0 e 30 de cada hora, use 0,30 * * * * (lista separada por virgula).

Qual a diferenca entre dia-da-semana 0 e 7 no cron?

Tanto 0 quanto 7 representam domingo. A convencao tradicional Unix usa 0 para domingo ate 6 para sabado, mas muitas implementacoes de cron tambem aceitam 7 como domingo por compatibilidade. Os dias 1-5 sao segunda a sexta-feira, e 6 e sabado. Para agendar apenas em dias uteis, use 1-5 na posicao dia-da-semana: 0 9 * * 1-5 executa as 9h de segunda a sexta.

O cron suporta agendamento no nivel de segundos?

O cron padrao Unix nao suporta agendamento inferior a um minuto — a menor unidade e um minuto. Se voce precisa de precisao em segundos, considere usar ferramentas do sistema como systemd timers (Linux), Agendador de Tarefas (Windows), ou agendadores no nivel de aplicacao como node-cron, APScheduler (Python) ou Quartz (Java) que suportam expressoes de 6 campos incluindo segundos.

Ferramentas Relacionadas para Desenvolvedores