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.
Casos de uso del generador de cron
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ón | Expresión | 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 |
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.
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).
| Operador | Sintaxis | Ejemplo | Produce |
|---|---|---|---|
| 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 |
Ejemplos de código
Cómo crear y registrar programaciones cron en Node.js, Python, Go y 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