Gerador de expressões cron — crie e entenda agendamentos cron
Monte um agendamento cron com menus ou cole um pronto, leia-o em português e veja as próximas 10 execuções no seu fuso e em UTC. Grátis, no navegador.
minuto · hora · dia do mês · mês · dia da semana. Nomes (JAN, MON), macros como @daily e uma linha inteira de crontab colada são aceitos.
Usa um intervalo ou passo (1-5); edite na caixa da expressão ou escolha valores abaixo para substituí-lo.
…
O cron lê o agendamento no fuso da máquina em que roda. Escolha “UTC” para GitHub Actions, Vercel, a maioria dos runners de CI e agendadores na nuvem; as duas colunas mostram os mesmos momentos.
Cole a saída de crontab -l. Comentários e linhas VAR=valor são ignorados.
| Executa a cada 5 minutos. /usr/local/bin/healthcheck.sh | |
| Às 02:30. /usr/local/bin/backup.sh --full | |
| Às 09:00, todo dia da semana de segunda-feira a sexta-feira. php /var/www/artisan reports:send | |
| Às 00:00, domingo. certbot renew --quiet |
| Consultar uma API ou fila a cada 10 minutos | |
| A cada 6 horas (00:00, 06:00, 12:00, 18:00) | |
| Backup noturno às 02:30 | |
| A cada hora no horário comercial, em dias úteis | |
| A cada 30 minutos no horário comercial | |
| Semanal, domingo à meia-noite (igual a @weekly) | |
| Duas vezes por mês: dias 1 e 15 às 08:00 | |
| Últimos dias do mês (verifique no script se amanhã é dia 1) | |
| Janela de manutenção no sábado às 03:00 | |
| Trimestral, 04:15 no dia 1º de jan., abr., jul. e out. | |
| Sexta-feira OU dia 13 (a regra do OU na prática) | |
| Macro: uma vez por dia à meia-noite |
Funciona totalmente no seu navegador. Nada do que você digita é enviado para nós nem armazenado. Ver todas as ferramentas grátis.
Encontrou um problema ou algo que poderia ser melhor? Lemos todas as mensagens e corrigimos rápido.
Este gerador de expressões cron grátis monta um agendamento cron de cinco campos a partir de menus e lê qualquer expressão de volta em português, com as próximas dez execuções listadas no seu fuso horário e em UTC. Cole uma expressão, uma linha de crontab ou um crontab inteiro e todos os agendamentos são explicados. Ele entende a sintaxe padrão compartilhada pelo crontab, GitHub Actions, Kubernetes CronJob, cron da Vercel e pela maioria dos agendadores: asteriscos, listas, intervalos, passos, nomes de meses e dias da semana e as macros no estilo @daily.
A sintaxe do cron é compacta e não perdoa: “0 0 1 * *” e “0 0 * * 1” são parecidas, mas significam o dia 1º de todo mês e toda segunda-feira. Ver o agendamento em palavras e como datas concretas é a diferença entre um job que roda às 9:00 em dias úteis e outro que roda às 09:00 UTC de domingo, e é justamente esse erro que esta página existe para evitar. A calculadora segue o Vixie cron à risca, inclusive a peculiaridade de que um campo de dia começando com asterisco muda o jeito como os dois campos de dia se combinam. Ela não aceita a sintaxe Quartz (campo de segundos, L, W, #) e avisa quando você a cola.
Como usar
- Comece por uma predefinição ou um exemplo, ou digite ou cole uma expressão (uma linha completa de crontab é reduzida ao agendamento). A descrição em português e as próximas execuções se atualizam enquanto você edita.
- Use os cinco editores de campo para definir minuto, hora, dia do mês, mês e dia da semana: todos, a cada N ou valores específicos.
- Confira as próximas dez execuções. Escolha “UTC” se o job vai rodar num servidor ou runner de CI, que quase sempre usa UTC; cada execução aparece no seu fuso e em UTC.
- Para auditar um servidor existente, cole a saída de crontab -l em “Explicar um crontab inteiro”.
- Copie a expressão ou uma linha completa de crontab com a descrição como comentário.
- Cole-a no crontab -e, num bloco schedule: do GitHub Actions, na especificação de um CronJob do Kubernetes ou nas configurações de cron da sua plataforma.
Perguntas frequentes
O que significam os cinco campos?
Na ordem: minuto (0–59), hora (0–23), dia do mês (1–31), mês (1–12 ou JAN–DEC), dia da semana (0–7 ou SUN–SAT, em que tanto 0 quanto 7 são domingo). Um asterisco significa todos os valores; 1-5 é um intervalo; 1,15 é uma lista; */10 significa a cada dez valores.
O que acontece quando o dia do mês e o dia da semana estão definidos?
O cron padrão (Vixie) roda o job quando qualquer um dos dois corresponde, não os dois. “0 0 13 * FRI” roda no dia 13 de todo mês e em toda sexta-feira, não só na sexta-feira 13. Esta página segue essa regra. Um detalhe: se um dos campos de dia começa com asterisco (por exemplo */2), o Vixie cron o trata como irrestrito e exige que os dois correspondam, então “0 0 */2 * 1” significa dias ímpares que caem numa segunda-feira. O Quartz é diferente e usa ? para marcar o campo não usado.
Qual fuso horário o cron usa?
O da máquina ou do serviço que o executa. Servidores pessoais costumam usar o horário local; runners na nuvem, GitHub Actions, Vercel e a maioria dos clusters Kubernetes usam UTC. Um job agendado para 9:00 num runner em UTC dispara às 5:00 em Toronto no verão e às 4:00 no inverno. A tabela de execuções mostra cada horário no seu fuso e em UTC, então a diferença fica visível.
Ele aceita segundos ou as extensões L, W e #?
Não. A sintaxe de seis campos (com segundos) e as extensões L (último), W (dia útil) e # (enésimo dia da semana) pertencem ao Quartz e a alguns agendadores corporativos, não ao cron padrão, e a maioria das plataformas as rejeita. Se você precisa de “última sexta-feira do mês”, a solução portável é um job que roda toda sexta-feira e verifica a data por conta própria.
Por que meu job nunca roda?
Causas comuns: o agendamento é válido mas impossível (31 de abril, 30 de fevereiro); o servidor está num fuso horário diferente do que você supôs; a linha do crontab não tem comando ou o PATH do comando é diferente do seu shell; ou o intervalo é menor que o tempo de execução do próprio job e as instâncias se acumulam. A lista de próximas execuções daqui pega as duas primeiras.
Referência da sintaxe cron
• * todos os valores · 5 exatamente 5 · 1-5 intervalo · 1,3,5 lista · */15 a cada 15 valores · 1-30/5 a cada 5 valores de 1 a 30
• Nomes: JAN–DEC para meses, SUN–SAT para dias da semana (sem diferenciar maiúsculas); intervalos de nomes funcionam (MON-FRI).
• @hourly (0 * * * *), @daily ou @midnight (0 0 * * *), @weekly (0 0 * * 0), @monthly (0 0 1 * *), @yearly ou @annually (0 0 1 1 *); @reboot roda uma vez na inicialização. O crontab aceita essas macros, mas nem toda plataforma aceita; a forma de cinco campos é a portável.
• Os dias da semana 0 e 7 são ambos domingo. Intervalos não dão a volta: FRI-MON é um erro; escreva FRI-SAT,SUN-MON ou 5,6,0,1.
• Os campos são separados por espaços; num crontab, o comando vem em seguida, na mesma linha.
Onde ficam os agendamentos cron
Linux e macOS: crontab -e, um job por linha, expressão e depois comando. GitHub Actions: on: schedule: - cron: '0 9 * * 1-5', sempre em UTC, e as execuções podem atrasar vários minutos em horários de pico. Kubernetes: o campo schedule de um CronJob. Vercel: crons no vercel.json, com um path e um schedule, em UTC. Agendadores na nuvem (AWS EventBridge, Google Cloud Scheduler) aceitam a mesma sintaxe com pequenas diferenças de dialeto, e o EventBridge acrescenta um campo de ano.
Como as próximas execuções são calculadas
A calculadora avança um dia do calendário por vez a partir de agora. Para cada dia, ela verifica o mês, depois os campos de dia do mês e dia da semana com a regra do Vixie (OU quando os dois estão restritos, E quando algum começa com *), e só então lista as horas e minutos correspondentes. Execuções que não são estritamente posteriores ao minuto atual são puladas, então um job previsto para este exato minuto aparece na próxima ocorrência.
No seu próprio fuso horário, o horário de verão faz diferença. Um horário que não existe no dia em que os relógios são adiantados (02:30 na maior parte da América do Norte) é pulado, e um horário que acontece duas vezes quando os relógios são atrasados roda uma vez só. É assim que o cronie trata jobs com horário fixo; outros daemons podem agir de outro jeito, o que é mais um motivo para servidores normalmente rodarem o cron em UTC.
Um agendamento que cita uma data impossível (30 de fevereiro, 31 de abril) nunca dispara, e a página avisa isso. Um agendamento em 29 de fevereiro só dispara em anos bissextos; a busca olha nove anos à frente, o suficiente para qualquer agendamento real.
Ferramentas grátis relacionadas
- Testador de regex — Teste uma expressão regular num texto de exemplo, com destaque das correspondências ao vivo, grupos de captura e prévia de substituição. Grátis, no navegador.
- Formatador de JSON — Formate, minifique e valide JSON, com erros de parsing localizados por linha e coluna. No seu navegador, sem upload.
- Conversor de unidades — Converta entre todas as unidades comuns (métricas e imperiais, culinária, dados, pressão, energia, velocidade, consumo de combustível) na hora, no seu navegador.