Cron Expression Generator

Construye y explica expresiones cron interactivamente con presets habituales.

sys-dev-toolkit.lovable.app/herramientas/cron-generator

Herramienta

Presets
* * * * *

Se ejecuta cada minuto, cada hora, cada día del mes, cada mes, cada día de la semana.

Qué problema resuelve

La sintaxis de cron es propensa a errores; una expresión mal formada se ejecuta cuando no debe.

Cron es el planificador de tareas de Unix desde 1975 y sigue siendo la forma más simple de ejecutar scripts periódicos. Su sintaxis, sin embargo, es notoriamente propensa a errores: una expresión mal escrita puede ejecutar tu backup cada minuto o no ejecutarlo nunca. Este generador de cron te muestra en lenguaje natural qué hace cada expresión y ofrece presets para los patrones más comunes.

La sintaxis de cinco campos

Una expresión cron clásica tiene cinco campos: minuto (0-59), hora (0-23), día del mes (1-31), mes (1-12) y día de la semana (0-7, donde 0 y 7 son domingo). El asterisco * significa 'todos los valores'. `0 3 * * *` = cada día a las 3:00. `*/15 * * * *` = cada 15 minutos. `0 9 * * 1-5` = a las 9:00 de lunes a viernes.

Extensiones no estándar (Vixie/cronie)

La mayoría de crons modernos aceptan atajos: @reboot (al arrancar), @daily (0 0 * * *), @hourly (0 * * * *), @weekly, @monthly. Nombres de meses y días (mon, tue, jan…) también funcionan. Ojo: no son portables a todos los sistemas (Alpine BusyBox no los soporta).

Cron en contenedores y systemd timers

En contenedores efímeros cron es incómodo (necesita un proceso siempre vivo y no gestiona logs bien). Alternativas modernas: un job Kubernetes CronJob, un timer systemd (más flexible y con logs en journald) o un scheduler externo (Airflow, Temporal, Rundeck). Para tareas simples en un servidor tradicional, cron sigue siendo imbatible.

Errores frecuentes en producción

El error más común: no redirigir stdout/stderr, así que si la tarea falla nadie se entera. Solución: `>>/var/log/mytask.log 2>&1`. Otro: no bloquear ejecuciones solapadas (usa `flock`). Y otro: no fijar PATH en el crontab, provocando 'command not found' aunque el binario exista en el shell interactivo.

Casos de uso comunes

  • Backups diarios de una base de datos o directorio.
  • Rotación y compresión de logs.
  • Renovación automática de certificados Let's Encrypt.
  • Sincronización periódica con rsync entre servidores.

Buenas prácticas

  • Redirige siempre salida y errores a un log.
  • Usa flock para evitar solapes en tareas lentas.
  • Define PATH y variables de entorno al inicio del crontab.
  • Monitoriza que la tarea se ejecutó (healthcheck ping a Cronitor o Healthchecks.io).