Gerador de Expressões Cron

Gera expressões cron visualmente com um construtor passo a passo

Presets rápidos

Minuto

Hora

Dia do mês

Mês

Dia da semana

Expressão cron

0 9 * * *

minute hour day(month) month day(week)

O Que É um Gerador de Expressões Cron?

Um gerador de expressões cron é uma ferramenta que constrói strings de agendamento cron por meio de uma interface visual, sem exigir que você as escreva manualmente. Expressões cron são strings de cinco campos (minuto, hora, dia do mês, mês, dia da semana) que definem quando uma tarefa recorrente deve ser executada. O formato remonta ao daemon cron original do Unix, de 1979, e hoje é usado em crontab, Kubernetes CronJobs, GitHub Actions, AWS EventBridge, Google Cloud Scheduler e dezenas de bibliotecas de agendamento.

Escrever expressões cron de memória é uma fonte comum de bugs. Os cinco campos interagem de maneiras não óbvias: um valor de passo como */15 no campo de minutos produz execuções aos 0, 15, 30 e 45, enquanto 5/15 começa no minuto 5 e produz 5, 20, 35, 50. Combinar dia-do-mês e dia-da-semana com valores não curinga cria uma condição OR, não AND, o que surpreende até engenheiros experientes. Um gerador visual elimina essa ambiguidade: você seleciona o agendamento desejado e a sintaxe correta é produzida automaticamente.

Um gerador cron difere de um analisador cron. Um analisador recebe uma expressão existente e a explica em linguagem natural. Um gerador faz o caminho inverso: você descreve o agendamento que precisa e a ferramenta gera a string cron correspondente. Use o gerador ao criar um novo job agendado; use o analisador ao auditar ou depurar jobs existentes.

Por Que Usar Este Gerador Cron?

Construir uma expressão cron manualmente significa memorizar a ordem dos campos, os intervalos de valores e as regras dos operadores. Um único campo mal posicionado transforma um job diário em um que executa a cada minuto. Este gerador permite selecionar o agendamento visualmente e copiar o resultado com um clique.

🖱️
Construtor Visual de Agendamentos
Selecione valores de minuto, hora, dia, mês e dia da semana a partir de menus e alternadores. A expressão cron é atualizada em tempo real conforme você altera cada campo. Sem necessidade de memorizar sintaxe.
🔒
Processamento com Privacidade
Toda a geração é executada no seu navegador. Nenhum dado de agendamento é enviado a um servidor. Suas expressões cron e configurações de job permanecem no seu dispositivo.
Resultado Instantâneo com Prévia
Veja a expressão cron gerada e uma prévia dos próximos horários de execução enquanto constrói. Verifique se o agendamento está correto antes de copiá-lo para a sua configuração.
📋
Sem Cadastro Necessário
Abra a página e comece a construir. Sem login, sem chave de API, sem instalação. Funciona em qualquer dispositivo com um navegador moderno, incluindo dispositivos móveis.

Casos de Uso do Gerador Cron

Desenvolvedor Frontend
Construa expressões cron para painéis administrativos e interfaces de agendamento. Gere a sintaxe correta para seletores de agendamento voltados ao usuário que armazenam strings cron no banco de dados.
Engenheiro Backend
Crie expressões cron para filas de tarefas como Celery, Sidekiq e Bull. Gere a string de agendamento, verifique as próximas execuções e cole-a na configuração do seu job.
DevOps / SRE
Gere agendamentos cron para Kubernetes CronJobs, pipelines de CI/CD e automação de infraestrutura. Construa expressões para janelas de backup, renovação de certificados e rotação de logs sem erros de sintaxe.
Engenheiro de QA
Crie expressões cron de teste que disparam em intervalos específicos para testes de integração. Gere agendamentos que produzam horários de execução previsíveis para validar o comportamento do agendador.
Engenheiro de Dados
Construa expressões cron para gatilhos de pipelines ETL e agendamentos de sincronização de dados. Gere agendamentos sem sobreposição para as etapas de extração, transformação e carga com temporização precisa.
Estudante / Aprendiz
Aprenda a sintaxe cron experimentando com o construtor visual. Altere campos individuais e veja como a expressão e os próximos horários de execução mudam. Desenvolva intuição sobre curingas, intervalos e valores de passo.

Presets Comuns de Agendamento Cron

A tabela abaixo lista expressões cron para os agendamentos mais utilizados. A maioria dos jobs em produção se encaixa em um desses padrões. Modifique campos individuais para ajustar à sua temporização real.

AgendamentoExpressãoUso típico
Every minute* * * * *Health checks, queue polling
Every 5 minutes*/5 * * * *Metrics collection, cache refresh
Every 15 minutes*/15 * * * *API sync, dashboard updates
Every hour0 * * * *Log rotation, report generation
Every 6 hours0 */6 * * *Database backups, digest emails
Daily at midnight0 0 * * *Nightly batch jobs, cleanup scripts
Daily at 9 AM0 9 * * *Daily reports, notification digests
Weekdays at 9 AM0 9 * * 1-5Business-hours tasks, standup reminders
Every Monday at midnight0 0 * * 1Weekly reports, dependency updates
First of every month0 0 1 * *Billing runs, monthly aggregation
Every Sunday at 2:30 AM30 2 * * 0Full backups during low-traffic window
January 1st at midnight0 0 1 1 *Annual reports, license renewals

Componentes de uma Expressão Cron

Toda expressão cron tem exatamente cinco campos, lidos da esquerda para a direita. Cada campo aceita valores específicos e operadores. Conhecer essas regras é suficiente para escrever qualquer agendamento que você encontraria em produção.

Layout de expressão cron com cinco campos:
*min0-59
*hour0-23
*day1-31
*month1-12
*weekday0-6

Quatro operadores controlam como os valores são combinados em cada campo. Você pode combiná-los: 1-5/2 no campo dia-da-semana significa segunda, quarta e sexta (intervalo 1-5, passo de 2).

OperadorSintaxeExemploProduz
Wildcard** (minute)Every minute
Lista,b,c1,15 (day)1st and 15th
Rangea-b9-17 (hour)9 AM through 5 PM
Step*/n*/10 (minute)Every 10 minutes
Range+Stepa-b/n10-30/5 (min)10, 15, 20, 25, 30

Exemplos de Código

Como criar e registrar agendamentos cron em Node.js, Python, Go e bash:

JavaScript (Node.js)
import { CronJob } from 'cron';

// Build a cron expression: every weekday at 9:00 AM
const expression = '0 9 * * 1-5';

const job = new CronJob(expression, () => {
  console.log('Running weekday morning task');
});
job.start();

// Programmatic expression building
function buildCron({ minute = '*', hour = '*', dom = '*', month = '*', dow = '*' }) {
  return `${minute} ${hour} ${dom} ${month} ${dow}`;
}

const expr = buildCron({ minute: '0', hour: '*/6', dow: '1-5' });
console.log(expr); // → "0 */6 * * 1-5"
Python
from crontab import CronTab

# Create a new cron job for the current user
cron = CronTab(user=True)

# Build a job: run backup.py every day at 2:30 AM
job = cron.new(command='python3 /home/user/backup.py')
job.setall('30 2 * * *')

print(job)           # → 30 2 * * * python3 /home/user/backup.py
print(job.is_valid()) # → True

# Schedule every 15 minutes on weekdays
job2 = cron.new(command='/usr/bin/sync-data')
job2.minute.every(15)
job2.dow.during('MON', 'FRI')

cron.write()  # Save to user's crontab

# Verify next run time
from croniter import croniter
from datetime import datetime

it = croniter('30 2 * * *', datetime.now())
print(it.get_next(datetime))  # → next 2:30 AM timestamp
Go
package main

import (
    "fmt"
    "strings"
    "github.com/robfig/cron/v3"
)

// BuildCron constructs a 5-field cron expression from parts
func BuildCron(minute, hour, dom, month, dow string) string {
    fields := []string{minute, hour, dom, month, dow}
    return strings.Join(fields, " ")
}

func main() {
    // Generate: every weekday at 9 AM
    expr := BuildCron("0", "9", "*", "*", "1-5")
    fmt.Println(expr) // → 0 9 * * 1-5

    // Validate and schedule it
    c := cron.New()
    _, err := c.AddFunc(expr, func() {
        fmt.Println("Running scheduled task")
    })
    if err != nil {
        fmt.Printf("Invalid expression: %v\n", err)
        return
    }
    c.Start()
}
Bash (crontab)
# Open the crontab editor to add a new job
crontab -e

# Add a cron job without opening an editor:
# Run cleanup.sh every Sunday at 3 AM
(crontab -l 2>/dev/null; echo "0 3 * * 0 /home/user/cleanup.sh") | crontab -

# Generate and add a job: every 10 minutes, log disk usage
EXPR="*/10 * * * *"
CMD="df -h >> /var/log/disk-usage.log"
(crontab -l 2>/dev/null; echo "$EXPR $CMD") | crontab -

# Verify the job was added
crontab -l | tail -1
# → */10 * * * * df -h >> /var/log/disk-usage.log

# Remove all cron jobs (use with caution)
# crontab -r

Perguntas Frequentes

Qual é a ordem correta dos campos em uma expressão cron?
A ordem padrão de cinco campos é: minuto (0-59), hora (0-23), dia do mês (1-31), mês (1-12), dia da semana (0-6, onde 0 é domingo). Essa ordem é definida pelo POSIX e utilizada pelo crontab, Kubernetes, GitHub Actions e pela maioria das bibliotecas cron. Algumas ferramentas como o Quartz Scheduler adicionam um campo de segundos no início, totalizando seis campos, mas o layout de cinco campos é o padrão universal.
Como gero uma expressão cron para 'a cada N minutos'?
Use o operador de passo no campo de minutos: */N. Para a cada 5 minutos, escreva */5 * * * *. Para a cada 15 minutos, escreva */15 * * * *. O operador de passo divide o intervalo do campo uniformemente. Note que */7 não produz execuções a cada 7 minutos entre fronteiras de hora; produz execuções nos minutos 0, 7, 14, 21, 28, 35, 42, 49, 56 e então reinicia no 0 na próxima hora.
Posso gerar uma expressão cron que executa no último dia de cada mês?
O cron POSIX padrão não tem um operador de 'último dia do mês'. Você não pode escrever 0 0 L * * no crontab ou em Kubernetes CronJobs. Alternativas incluem agendar para os dias 28-31 e adicionar uma verificação shell ([ $(date +%d -d tomorrow) -eq 01 ]), ou usar uma implementação cron estendida como o Quartz, que suporta o modificador L. As expressões de taxa do AWS EventBridge também conseguem direcionar o último dia nativamente.
Qual é a diferença entre um gerador cron e um analisador cron?
Um gerador cron recebe seus requisitos de agendamento (ex.: 'todo dia útil às 9h') e gera a expressão cron correta (0 9 * * 1-5). Um analisador cron faz o inverso: recebe uma expressão existente e produz uma descrição legível. Use o gerador ao criar novos agendamentos. Use o analisador ao revisar ou depurar agendamentos existentes.
Como evito sobreposição de cron jobs?
O cron em si não impede execuções sobrepostas. Se um job agendado para cada minuto leva 90 segundos, duas instâncias vão se sobrepor. Para evitar isso, use um arquivo de lock (flock no bash), um lock distribuído (Redis, etcd), ou a política de concorrência integrada do seu agendador. Kubernetes CronJobs têm um campo concurrencyPolicy que pode ser definido como Forbid ou Replace. Em agendadores de nível de aplicação como o Celery, use o pool solo ou um lock por tarefa.
0 ou 1 é o primeiro dia da semana no cron?
No cron POSIX, 0 é domingo e 6 é sábado. Tanto 0 quanto 7 representam domingo na maioria das implementações. O Quartz Scheduler usa uma convenção diferente, onde 1 é domingo e 7 é sábado. Se o seu sistema aceitar nomes de dias (SUN, MON, TUE), prefira usá-los em vez de números para evitar confusão entre plataformas.
Como gero uma expressão cron para um fuso horário específico?
O crontab tradicional usa o fuso horário local do sistema. Você pode definir a variável TZ no arquivo crontab (TZ=America/Sao_Paulo) em alguns sistemas. Kubernetes CronJobs suportam o campo .spec.timeZone desde a versão 1.25. O AWS EventBridge e o Google Cloud Scheduler permitem especificar o fuso por agendamento. Sempre documente o fuso esperado junto com a expressão cron na sua configuração.