Gerador de Expressões Cron
Monte um agendamento crontab com menus suspensos — minuto, hora, dia, mês, dia da semana — com leitura em texto simples e modelos comuns.
1.001 visualizações
Como Funciona
Uma expressão cron agenda uma tarefa recorrente usando cinco campos separados por espaço, sempre na mesma ordem: minuto · hora · dia do mês · mês · dia da semana. Cada campo aceita um valor ou um de quatro caracteres especiais: * significa "todo valor possível"; */15 significa "a cada 15 unidades, a partir do mínimo do campo"; 1,15,30 é uma lista explícita; 1-5 é um intervalo inclusivo. Lendo da esquerda para a direita, 0 9 * * 1-5 significa "no minuto 0 da hora 9, em todo dia do mês, em todo mês, nos dias da semana de 1 a 5" — ou seja, 9h da manhã de segunda a sexta. */10 * * * * dispara a cada 10 minutos, o dia todo, e 0 0 1 * * dispara à meia-noite no dia 1 de cada mês.
Monte um agendamento pelos menus suspensos e esta ferramenta junta os cinco campos, depois traduz o resultado em uma frase em linguagem simples, para que você possa verificar se faz sentido antes de colar em um arquivo crontab ou em um agendador na nuvem. Modelos comuns — a cada minuto, de hora em hora, diariamente em um horário específico, apenas em dias úteis — estão a um clique de distância para os agendamentos mais usados.
O Que Você Precisa Saber
A maior surpresa na semântica do cron: quando dia do mês e dia da semana estão ambos restritos (nenhum deles é deixado como *), os dois se combinam com OU, não com E. Assim, 0 0 15 * 5 não significa "o dia 15, se for sexta-feira" — significa "o dia 15 do mês, OU toda sexta-feira", o que dispara com muito mais frequência do que a maioria pretende. Se apenas um dos dois importa, deixe o outro como *.
A numeração do dia da semana também pode surpreender: tanto 0 quanto 7 significam domingo na maioria das implementações de cron, com segunda-feira sendo 1. E, crucialmente, o cron sempre roda no fuso horário configurado do servidor — normalmente UTC em infraestrutura de nuvem — não no fuso horário local de quem configurou o agendamento, então uma tarefa agendada para "9h" pode disparar em um horário local diferente do esperado até que o fuso horário do host seja confirmado. Agendadores em nuvem como o schedule: do GitHub Actions, o AWS EventBridge e o CronJob do Kubernetes usam essa mesma sintaxe de cinco campos como base, às vezes com extensões específicas do fornecedor (um campo opcional de segundos, uma forma abreviada de dias nomeados), então um agendamento montado aqui se transfere diretamente para essas plataformas com tradução mínima.
Perguntas Frequentes
Como faço para rodar algo a cada 30 segundos?
A menor unidade do cron clássico é o minuto. A solução comum é usar duas entradas: uma normal e outra com `sleep 30 &&` antes do comando — ou usar temporizadores do systemd, que suportam segundos.
Por que minha tarefa das 9:00 rodou em um horário estranho?
Quase sempre é o fuso horário: o crontab roda no horário local do servidor (geralmente UTC em máquinas na nuvem). Verifique com `date` no host, ou configure CRON_TZ, se suportado.
Como testo uma expressão com segurança?
Aponte primeiro para um comando de log: `* * * * * date >> /tmp/cron-test.log`, confirme o ritmo e só depois troque pelo comando real. Verifique também se o usuário do crontab tem o PATH necessário — o ambiente do cron é mínimo.
O que acontece quando dia do mês e dia da semana são definidos ao mesmo tempo?
Eles se combinam com OU, não com E — um agendamento como `0 0 15 * 5` roda no dia 15 do mês E em toda sexta-feira, não apenas em uma sexta-feira que caia no dia 15. O cron sozinho não consegue expressar uma interseção das duas condições; essa checagem precisa acontecer dentro da própria tarefa.
O cron leva em conta o horário de verão?
Depende da implementação, mas o cron clássico geralmente segue o horário local do relógio do sistema, incluindo as mudanças de horário de verão — o que significa que uma tarefa agendada durante a hora de "adiantar" ou "atrasar" o relógio pode rodar zero ou duas vezes naquele dia. Servidores configurados em UTC evitam isso completamente, o que é mais um motivo pelo qual a maioria dos agendadores de produção usa UTC por padrão.
Posso combinar um intervalo e um passo no mesmo campo, como a cada dois dias úteis?
Sim — um passo pode ser aplicado a um intervalo, e não apenas a um asterisco: `1-5/2` no campo do dia da semana significa "a cada dois dias dentro do intervalo de segunda a sexta", ou seja, segunda, quarta e sexta. Essa forma combinada de intervalo/passo é suportada pela maioria das implementações modernas de cron (incluindo o Vixie cron e o systemd), mas não pelas mais antigas baseadas em POSIX, então teste uma vez antes de confiar nela em um ambiente legado.
Ferramentas Semelhantes
Reportar um Problema
Gerador de Expressões Cron
Comentários
Ainda não há comentários — seja o primeiro a escrever um!