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.
Casos de Uso do Gerador Cron
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.
| Agendamento | Expressão | Uso 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 hour | 0 * * * * | Log rotation, report generation |
| Every 6 hours | 0 */6 * * * | Database backups, digest emails |
| Daily at midnight | 0 0 * * * | Nightly batch jobs, cleanup scripts |
| Daily at 9 AM | 0 9 * * * | Daily reports, notification digests |
| Weekdays at 9 AM | 0 9 * * 1-5 | Business-hours tasks, standup reminders |
| Every Monday at midnight | 0 0 * * 1 | Weekly reports, dependency updates |
| First of every month | 0 0 1 * * | Billing runs, monthly aggregation |
| Every Sunday at 2:30 AM | 30 2 * * 0 | Full backups during low-traffic window |
| January 1st at midnight | 0 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.
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).
| Operador | Sintaxe | Exemplo | Produz |
|---|---|---|---|
| Wildcard | * | * (minute) | Every minute |
| List | a,b,c | 1,15 (day) | 1st and 15th |
| Range | a-b | 9-17 (hour) | 9 AM through 5 PM |
| Step | */n | */10 (minute) | Every 10 minutes |
| Range+Step | a-b/n | 10-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:
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"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 timestamppackage 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()
}# 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