Gerador de expressões cron:
quando é que vai correr?
Escolha uma frequência e uma hora. O gerador escreve a expressão de cinco campos, lê-a de volta em português corrente e lista as próximas dez datas em que vai correr — para verificar o horário antes de chegar a um crontab, não depois da execução das 03:30.
A ler 30 3 * * 1-5
Cada expressão cron responde às mesmas cinco perguntas, da esquerda para a direita — aqui, com um horário real.
Lido como frase: segunda a sexta-feira, às 03:30. 30 3 * * 1-5
Veja o horário antes de o cron o executar
A maioria das expressões cron é testada pela primeira vez na execução das 03:30, em produção. Este gerador move esse teste para o seu navegador:
- Perguntas estruturadas, não suposições. Frequência, dia, hora — cada ambiguidade da versão por extenso passa a ser um controlo explícito.
- As próximas dez execuções, calculadas. Um interpretador real percorre o calendário para poder ler o horário como datas, não como sintaxe.
- Resultado POSIX portátil. Cinco campos, só números — funciona em qualquer crontab, do Alpine ao AIX. Os símbolos exóticos ficam sinalizados, não gerados.
Uma expressão cron, campo a campo
*/15 9-17 * * 1-5O que significam *, */5 e @daily
Cinco funcionam em qualquer crontab. O sexto é exclusivo do Quartz e não é instalado.
Corresponde a tudo — a predefinição, e a mais ruidosa. No campo dos minutos significa sessenta execuções por hora, e é aí que começa o pedido de suporte «porque correu isto 60 vezes».
Um passo — a cada 5.º valor. Os passos não se propagam entre campos: */90 no campo dos minutos torna-se silenciosamente «aos :00» — uma cadência de 90 minutos precisa de duas linhas.
Um intervalo — seg.–sex. no campo do dia da semana, 9–17 no campo da hora. Combina-se com uma lista: 1-5,0 são os dias úteis mais o domingo.
Uma lista — valores exatos, separados por vírgulas. A forma portátil de dizer «duas vezes por hora» ou «janeiro, abril, julho, outubro».
Atalhos — @hourly @daily @weekly @reboot. Práticos onde são suportados, mas @reboot corre quando o daemon do cron arranca, o que nem sempre é um arranque do sistema.
Não é cron. # L W ? pertencem ao Quartz — Jenkins, Spring, algumas ferramentas de CI. Cole-os num crontab e a linha não é instalada.
Horários de cron prontos a usar
Todos são POSIX válidos. Para os casos menos comuns, como «todos os 2 de março às 17:30», consulte a nossa biblioteca de exemplos de cron.
Armadilhas comuns do cron
Ambas calculadas ao vivo, no seu navegador — sem ida e volta ao servidor.
Perguntas frequentes sobre expressões cron
Transforma um horário que consegue dizer por palavras, como «todos os dias úteis às nove», na expressão de cinco campos que o cron lê: 0 9 * * 1-5. Esta ferramenta vai mais além. Lê a expressão de volta em português e calcula as suas próximas dez execuções, para poder verificar o horário como datas. Também sinaliza as duas armadilhas clássicas: a regra OR dos campos de dia, e o erro do asterisco em vez de zero.
Da esquerda para a direita: minuto (0–59), hora (0–23), dia do mês (1–31), mês (1–12), dia da semana (0–7, em que 0 e 7 significam ambos domingo). Cada campo aceita um número, uma lista (0,30), um intervalo (1-5), um passo (*/15), ou * para «qualquer». Alguns agendadores acrescentam um sexto campo para os segundos (Quartz, Spring) — um crontab não o aceita.
Não numa única linha — os passos não transportam o resto entre campos, por isso */90 no campo dos minutos significa apenas «aos :00». A resposta são duas linhas de crontab que se intercalam: 0 0-21/3 * * * (00:00, 03:00, 06:00…) mais 30 1-22/3 * * * (01:30, 04:30, 07:30…) — juntas, a cada 90 minutos. O mesmo truque cobre qualquer cadência que não divida 60.
Porque o campo dos minutos era *. * 3 * * * significa «todos os minutos em que a hora é 3» — das 03:00 às 03:59, sessenta execuções. O que pretendia era 0 3 * * *. É o erro clássico do cron, e a razão pela qual esta ferramenta escreve sempre um minuto explícito, a menos que escolha mesmo «a cada minuto».
O cron corre quando qualquer um dos dois corresponde — união, não interseção. Está na especificação POSIX, e apanha muita gente desprevenida. Tome-se 0 9 1-7 * 1, uma tentativa natural de exprimir «a primeira segunda-feira do mês». Corre nos dias 1–7 e todas as segundas-feiras: 10 ou 11 manhãs por mês em vez de uma. A vista da armadilha, nesta página, calcula as duas leituras lado a lado e mostra a correção portátil.
A hora local do servidor — o cron não tem campo de fuso horário. Se a máquina corre em UTC (como a maioria das imagens cloud), as 09:00 no crontab são 09:00 UTC. Alguns crons (cronie no RHEL/Fedora, FreeBSD) respeitam uma linha CRON_TZ=; o vixie-cron clássico do Debian não. E atenção à hora de verão se o servidor correr num fuso local: nas noites de mudança, as 02:30 podem acontecer duas vezes — ou nenhuma. Agendar fora do intervalo 01:00–03:00, ou manter os servidores em UTC, evita o problema por completo.
O cron regista que iniciou a tarefa; nada de nativo diz se foi bem-sucedida. Três camadas: redirecionar a saída para um registo (>> /var/log/job.log 2>&1), definir MAILTO= para um endereço que alguém leia, e depois colocar uma verificação independente sobre o resultado. A terceira camada funciona sempre que a saída é visível a partir de fora: uma página regenerada, um certificado renovado, um sitemap. A vista de falhas silenciosas, nesta página, percorre todo o modo de falha.
Continuar a explorar
As ferramentas grátis são só o começo.
O Uptimia cuida dos seus sites.
Uptime, SSL, validade de domínio, velocidade de página, transações — monitorização em 171+ locais em todo o mundo. Grátis por 30 dias.