Analizador de Expresiones Cron
Analiza expresiones cron y obtén descripciones legibles con una vista previa de las próximas ejecuciones
Expresión cron
minute hour day(month) month day(week)
Descripción en lenguaje natural
At 9:00 AM, Mon, Tue, Wed, Thu, Fri
Desglose por campo
Minute
0
0–59
Hour
9
0–23
Day (month)
*
1–31
Month
*
1–12
Day (week)
1-5
0–6
Próximas 10 ejecuciones programadas
¿Qué es el análisis de expresiones cron?
Una expresión cron es una cadena de cinco campos separados por espacios que define una programación recurrente. El formato tiene su origen en el demonio cron de Unix, escrito por primera vez por Ken Thompson para Version 7 Unix en 1979. Cada campo representa una unidad de tiempo: minuto, hora, día del mes, mes y día de la semana. Analizar una expresión cron significa convertir esta notación compacta en una descripción legible y en una lista concreta de las próximas ejecuciones.
El formato estándar de cinco campos es utilizado por crontab en Linux y macOS, por plataformas de CI/CD como GitHub Actions y GitLab CI, por los planificadores en la nube de AWS (EventBridge), Google Cloud Scheduler y Azure Functions, y por las librerías de planificación de tareas en todos los lenguajes de programación principales. Algunos sistemas extienden el formato a seis o siete campos añadiendo un campo de segundos o de año, pero el esquema de cinco campos definido por POSIX sigue siendo la base que todas las implementaciones comparten.
Analizar expresiones cron a mano es propenso a errores. La interacción entre campos genera programaciones no evidentes: 0 9 1-7 * 1 no significa 'cada lunes de la primera semana', sino 'los días 1 al 7 de cada mes O cualquier lunes'. Un analizador de cron elimina esta ambigüedad expandiendo cada campo, aplicando las reglas de combinación y produciendo los timestamps reales en los que se ejecutará la tarea.
¿Por qué usar este analizador de cron?
Leer una expresión cron como 30 */6 1,15 * * en un archivo de configuración y saber exactamente cuándo se ejecuta requiere hacer cálculos mentales sobre cinco campos. Este analizador hace ese trabajo de forma inmediata.
Casos de uso del analizador de cron
Referencia de sintaxis de expresiones cron
Una expresión cron estándar tiene cinco campos separados por espacios. Cada campo acepta enteros, comodines, rangos, listas y valores de paso. La tabla a continuación muestra el rango permitido y los operadores para cada campo.
| Campo | Rango | Operadores | Descripción |
|---|---|---|---|
| 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) |
Cuatro caracteres especiales controlan cómo se comparan los valores dentro de cada campo:
| Carácter | Nombre | Comportamiento |
|---|---|---|
| * | 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." |
Aquí tienes expresiones cron comunes que cubren la mayoría de las necesidades de programación:
| Expresión | Programación |
|---|---|
| * * * * * | 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 |
Ejemplos de código
Cómo analizar expresiones cron y calcular las próximas ejecuciones en los lenguajes más 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"