Analisador de Expressões Cron
Analise expressões cron em descrições legíveis e visualize as próximas execuções agendadas
Expressão cron
minute hour day(month) month day(week)
Descrição legível
At 9:00 AM, Mon, Tue, Wed, Thu, Fri
Detalhamento dos campos
Minute
0
0–59
Hour
9
0–23
Day (month)
*
1–31
Month
*
1–12
Day (week)
1-5
0–6
Próximas 10 execuções agendadas
O Que É a Análise de Expressões Cron?
Uma expressão cron é uma string de cinco campos separados por espaços que define um agendamento recorrente. O formato se originou no daemon cron do Unix, escrito por Ken Thompson para o Unix Version 7 em 1979. Cada campo representa uma unidade de tempo: minuto, hora, dia do mês, mês e dia da semana. Analisar uma expressão cron significa converter essa notação compacta em uma descrição legível e uma lista concreta dos próximos horários de execução.
O formato padrão de cinco campos é utilizado pelo crontab no Linux e no macOS, por plataformas de CI/CD como GitHub Actions e GitLab CI, por agendadores em nuvem como AWS EventBridge, Google Cloud Scheduler e Azure Functions, e por bibliotecas de agendamento em todas as principais linguagens de programação. Alguns sistemas estendem o formato para seis ou sete campos adicionando um campo de segundos ou de ano, mas o layout de cinco campos definido pelo POSIX continua sendo a base compartilhada por todas as implementações.
Analisar expressões cron manualmente é propenso a erros. A interação entre os campos cria agendamentos não óbvios: 0 9 1-7 * 1 não significa 'toda segunda-feira na primeira semana', mas sim 'do dia 1 ao 7 de todo mês OU qualquer segunda-feira'. Um analisador de cron elimina essa ambiguidade expandindo cada campo, aplicando as regras de combinação e produzindo os timestamps reais em que o job será executado.
Por Que Usar Este Analisador de Cron?
Ler uma expressão cron como 30 */6 1,15 * * em um arquivo de configuração e saber exatamente quando ela dispara exige cálculo mental em cinco campos. Este analisador faz esse trabalho instantaneamente.
Casos de Uso do Analisador Cron
Referência de Sintaxe de Expressões Cron
Uma expressão cron padrão tem cinco campos separados por espaços. Cada campo aceita inteiros, curingas, intervalos, listas e valores de passo. A tabela abaixo mostra o intervalo permitido e os operadores de cada campo.
| Campo | Intervalo | Operadores | Descrição |
|---|---|---|---|
| Minute | 0–59 | * , - / | Minute within the hour |
| Hour | 0–23 | * , - / | Hour of the day (24-hour) |
| Day (month) | 1–31 | * , - / | Day of the month |
| Month | 1–12 | * , - / | Month of the year (or JAN–DEC) |
| Day (week) | 0–6 | * , - / | Day of the week (0 = Sunday, or SUN–SAT) |
Quatro caracteres especiais controlam como os valores são combinados em cada campo:
| Char | Nome | Comportamento |
|---|---|---|
| * | Wildcard | Matches every possible value in the field. * in the minute field means "every minute." |
| , | List | Separates individual values. 1,15 in the day field means "the 1st and 15th." |
| - | Range | Defines an inclusive range. 1-5 in the day-of-week field means "Monday through Friday." |
| / | Step | Defines an interval. */10 in the minute field means "every 10 minutes." 5/15 means "5, 20, 35, 50." |
Aqui estão expressões cron comuns que cobrem a maioria das necessidades de agendamento:
| Expressão | Agendamento |
|---|---|
| * * * * * | Every minute |
| 0 * * * * | Every hour (at minute 0) |
| */15 * * * * | Every 15 minutes |
| 0 9 * * * | Every day at 9:00 AM |
| 0 9 * * 1-5 | Weekdays at 9:00 AM |
| 30 2 * * 0 | Every Sunday at 2:30 AM |
| 0 0 1 * * | First day of every month at midnight |
| 0 0 * * 1 | Every Monday at midnight |
| 0 0 1 1 * | January 1st at midnight (yearly) |
| 0 */6 * * * | Every 6 hours |
| 5,35 * * * * | At minute 5 and 35 of every hour |
| 0 9-17 * * 1-5 | Every hour from 9 AM to 5 PM, weekdays |
Exemplos de Código
Como analisar expressões cron e calcular os próximos horários de execução nas linguagens mais populares:
import cronstrue from 'cronstrue';
// Parse cron to human-readable text
cronstrue.toString('0 9 * * 1-5');
// → "At 09:00 AM, Monday through Friday"
cronstrue.toString('*/15 * * * *');
// → "Every 15 minutes"
// Validate with cron-parser and get next run times
import { parseExpression } from 'cron-parser';
const interval = parseExpression('30 2 * * 0');
console.log(interval.next().toISOString());
// → next Sunday at 02:30 UTC
// Iterate over the next 5 runs
for (let i = 0; i < 5; i++) {
console.log(interval.next().toString());
}from crontab import CronTab
from croniter import croniter
from datetime import datetime
# Parse and describe a cron expression
cron = CronTab('0 9 * * 1-5')
print(cron.next(default_utc=True))
# → seconds until next run
# Get the next 5 run times with croniter
base = datetime.now()
cron_iter = croniter('0 9 * * 1-5', base)
for _ in range(5):
print(cron_iter.get_next(datetime))
# → next 5 weekday 09:00 timestamps
# Check if a specific time matches
print(croniter.match('*/15 * * * *', datetime(2026, 3, 25, 10, 30)))
# → True (minute 30 is divisible by 15)package main
import (
"fmt"
"time"
"github.com/robfig/cron/v3"
)
func main() {
// Parse a standard 5-field cron expression
parser := cron.NewParser(cron.Minute | cron.Hour | cron.Dom | cron.Month | cron.Dow)
schedule, err := parser.Parse("0 9 * * 1-5")
if err != nil {
panic(err)
}
// Calculate the next 5 run times
now := time.Now()
for i := 0; i < 5; i++ {
now = schedule.Next(now)
fmt.Println(now)
}
// → next 5 weekday 09:00 timestamps
}# List current user's cron jobs crontab -l # Edit cron jobs interactively crontab -e # Add a job: run backup.sh every day at 2:30 AM # (append to crontab via pipe) (crontab -l 2>/dev/null; echo "30 2 * * * /home/user/backup.sh") | crontab - # Check syntax with a dry-run parse (requires cronie or busybox) # The system will reject invalid expressions when saving # View cron logs on systemd-based Linux journalctl -u cron --since "1 hour ago"