Generador de expresiones Cron

Genera expresiones cron visualmente con un constructor paso a paso

Presets rápidos

Minuto

Hora

Día del mes

Mes

Día de la semana

Expresión cron

0 9 * * *

minute hour day(month) month day(week)

¿Qué es un generador de expresiones cron?

Un generador de expresiones cron es una herramienta que construye cadenas de programación cron a través de una interfaz visual en lugar de requerir que las escribas a mano. Las expresiones cron son cadenas de cinco campos (minuto, hora, día del mes, mes, día de la semana) que definen cuándo debe ejecutarse una tarea recurrente. El formato tiene su origen en el demonio cron de Unix de 1979 y se usa hoy en crontab, Kubernetes CronJobs, GitHub Actions, AWS EventBridge, Google Cloud Scheduler y decenas de librerías de planificación de tareas.

Escribir expresiones cron de memoria es una fuente habitual de errores. Los cinco campos interactúan de formas no evidentes: un valor de paso como */15 en el campo de minutos produce ejecuciones en 0, 15, 30 y 45, mientras que 5/15 empieza en el minuto 5 y produce 5, 20, 35, 50. Combinar día-del-mes y día-de-la-semana con valores que no son comodín crea una condición OR, no AND, lo que sorprende incluso a ingenieros experimentados. Un generador visual elimina esta ambigüedad: seleccionas la programación que necesitas y la herramienta genera la sintaxis correcta automáticamente.

Un generador de cron es distinto a un analizador de cron. Un analizador toma una expresión existente y la explica en lenguaje natural. Un generador trabaja en sentido contrario: describes la programación que necesitas y la herramienta genera la cadena cron correspondiente. Usa el generador al crear una nueva tarea programada; usa el analizador al auditar o depurar las existentes.

¿Por qué usar este generador de cron?

Escribir una expresión cron a mano implica memorizar el orden de los campos, los rangos de valores y las reglas de los operadores. Un campo mal colocado convierte una tarea diaria en una que se ejecuta cada minuto. Este generador te permite seleccionar tu programación visualmente y copiar el resultado en un clic.

🖱️
Constructor visual de programaciones
Selecciona los valores de minuto, hora, día, mes y día de la semana desde menús desplegables y controles. La expresión cron se actualiza en tiempo real al cambiar cada campo. Sin necesidad de memorizar la sintaxis.
🔒
Procesamiento con privacidad
La generación completa se ejecuta en tu navegador. Ningún dato de programación se envía a un servidor. Tus expresiones cron y configuraciones de tareas permanecen en tu dispositivo.
Salida instantánea con vista previa
Ve la expresión cron generada y una vista previa de las próximas ejecuciones programadas mientras construyes. Verifica que la programación es correcta antes de copiarla en tu configuración.
📋
Sin cuenta requerida
Abre la página y empieza a construir. Sin inicio de sesión, sin clave API, sin instalación. Funciona en cualquier dispositivo con un navegador moderno, incluyendo móvil.

Casos de uso del generador de cron

Desarrollador frontend
Genera expresiones cron para paneles de administración e interfaces de programación. Produce la sintaxis correcta para selectores de horario orientados al usuario que almacenan cadenas cron en la base de datos.
Ingeniero backend
Crea expresiones cron para colas de tareas como Celery, Sidekiq y Bull. Genera la cadena de programación, verifica las próximas ejecuciones y pégala en la configuración de tu tarea.
DevOps / SRE
Genera programaciones cron para Kubernetes CronJobs, pipelines de CI/CD y automatización de infraestructura. Construye expresiones para ventanas de copia de seguridad, renovación de certificados y rotación de logs sin errores de sintaxis.
Ingeniero de QA
Crea expresiones cron de prueba que se disparen a intervalos específicos para pruebas de integración. Genera programaciones que produzcan tiempos de ejecución predecibles para validar el comportamiento del planificador.
Ingeniero de datos
Construye expresiones cron para los disparadores de pipelines ETL y las programaciones de sincronización de datos. Genera programaciones sin solapamiento para las fases de extracción, transformación y carga con una temporización precisa.
Estudiante / Aprendiz
Aprende la sintaxis cron experimentando con el constructor visual. Cambia campos individuales y observa cómo cambian la expresión y los tiempos de próxima ejecución. Desarrolla intuición sobre comodines, rangos y valores de paso.

Presets comunes de programación cron

La tabla a continuación lista expresiones cron para las programaciones más frecuentes. La mayoría de las tareas en producción caen en uno de estos patrones. Modifica los campos individuales para adaptarlos a tu temporización exacta.

ProgramaciónExpresiónUso 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

Bloques de construcción de expresiones cron

Cada expresión cron tiene exactamente cinco campos, leídos de izquierda a derecha. Cada campo acepta valores y operadores específicos. Conocer estas reglas es suficiente para escribir cualquier programación que encuentres en producción.

Estructura de cinco campos de una expresión cron:
*min0-59
*hour0-23
*day1-31
*month1-12
*weekday0-6

Cuatro operadores controlan cómo se comparan los valores dentro de cada campo. Puedes combinarlos: 1-5/2 en el campo día-de-la-semana significa lunes, miércoles, viernes (rango 1-5, paso de 2).

OperadorSintaxisEjemploProduce
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

Ejemplos de código

Cómo crear y registrar programaciones cron en Node.js, Python, Go y 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

Preguntas frecuentes

¿Cuál es el orden correcto de los campos en una expresión cron?
El orden estándar de cinco campos es: minuto (0-59), hora (0-23), día del mes (1-31), mes (1-12), día de la semana (0-6, donde 0 es domingo). Este orden está definido por POSIX y es utilizado por crontab, Kubernetes, GitHub Actions y la mayoría de las librerías cron. Algunas herramientas como Quartz Scheduler anteponen un campo de segundos, pasando a seis campos, pero el esquema de cinco campos es el estándar universal.
¿Cómo genero una expresión cron para 'cada N minutos'?
Usa el operador de paso en el campo de minutos: */N. Para cada 5 minutos, escribe */5 * * * *. Para cada 15 minutos, escribe */15 * * * *. El operador de paso divide el rango del campo de forma uniforme. Ten en cuenta que */7 no produce ejecuciones cada 7 minutos cruzando límites de hora; produce ejecuciones en los minutos 0, 7, 14, 21, 28, 35, 42, 49, 56, y luego se reinicia a 0 en la hora siguiente.
¿Puedo generar una expresión cron que se ejecute el último día de cada mes?
El cron POSIX estándar no tiene un operador de 'último día del mes'. No puedes escribir 0 0 L * * en crontab o Kubernetes CronJobs. Las alternativas incluyen programar para los días 28-31 y añadir una comprobación de shell ([ $(date +%d -d tomorrow) -eq 01 ]), o usar una implementación extendida de cron como Quartz que admite el modificador L. Las expresiones de tasa de AWS EventBridge también pueden apuntar al último día de forma nativa.
¿Cuál es la diferencia entre un generador de cron y un analizador de cron?
Un generador de cron toma tus requisitos de programación (por ejemplo, 'cada día de la semana a las 9 AM') y genera la expresión cron correcta (0 9 * * 1-5). Un analizador de cron trabaja al revés: toma una expresión existente y produce una descripción legible. Usa el generador al crear nuevas programaciones. Usa el analizador al revisar o depurar las existentes.
¿Cómo evito que los cron jobs se solapen?
Cron por sí mismo no previene ejecuciones solapadas. Si una tarea programada para cada minuto tarda 90 segundos, dos instancias se solaparán. Para evitarlo, usa un archivo de bloqueo (flock en bash), un bloqueo distribuido (Redis, etcd), o la política de concurrencia integrada en tu planificador. Los Kubernetes CronJobs tienen un campo concurrencyPolicy que puede configurarse como Forbid o Replace. En planificadores a nivel de aplicación como Celery, usa el pool solo o un bloqueo a nivel de tarea.
¿El 0 o el 1 es el primer día de la semana en cron?
En el cron POSIX, 0 es domingo y 6 es sábado. Tanto 0 como 7 representan el domingo en la mayoría de las implementaciones. Quartz Scheduler usa una convención diferente donde 1 es domingo y 7 es sábado. Si tu sistema admite nombres de días (SUN, MON, TUE), úsalos en lugar de números para evitar confusiones entre plataformas.
¿Cómo genero una expresión cron para una zona horaria específica?
El crontab tradicional usa la zona horaria local del sistema. Puedes establecer la variable TZ en el archivo crontab (TZ=America/New_York) en algunos sistemas. Los Kubernetes CronJobs admiten un campo .spec.timeZone desde la versión 1.25. AWS EventBridge y Google Cloud Scheduler permiten especificar la zona horaria por cada programación. Documenta siempre la zona horaria esperada junto a la expresión cron en tu configuración.