raatools/

Generador de expresiones Cron

Construye y decodifica expresiones cron de cinco campos visualmente.

Format: minute hour day-of-month month day-of-week

Use * for any value, 0-5 for ranges, 1,3,5 for lists, */5 for every N

Cron Expression
* * * * *
Description

every minute

¿Qué es cron?

Cron es el programador de tareas estándar en sistemas Unix y Linux. Ejecuta comandos o scripts a horas e intervalos especificados, lo que lo hace esencial para administración de sistemas, automatización DevOps y programación de aplicaciones backend. El nombre proviene de la palabra griega chronos, que significa tiempo.

Una expresión cron es una cadena compacta de cinco campos que define cuándo debe ejecutarse un trabajo. Cada campo especifica un componente temporal: minuto, hora, día del mes, mes y día de la semana. Juntos, estos cinco campos pueden expresar prácticamente cualquier programación, desde "cada minuto" hasta "una vez al año en una fecha específica".

Sintaxis de cron explicada

Cada uno de los cinco campos acepta valores específicos y caracteres especiales. Un asterisco (*) significa "cada valor posible". Un número fija un valor específico. Un guion (1-5) define un rango. Una coma (1,3,5) crea una lista. Una barra (*/5) establece un intervalo de paso. Combinando estos operadores puedes construir prácticamente cualquier programación.

Referencia de campos

  • Minuto (0-59): el minuto de la hora en que se ejecuta el trabajo.
  • Hora (0-23): la hora del día en formato 24 horas. 0 es medianoche, 12 es mediodía.
  • Día del mes (1-31): el día del calendario. No todos los meses tienen 31 días: cron salta automáticamente las fechas no válidas.
  • Mes (1-12): el mes del calendario. 1 es enero, 12 es diciembre.
  • Día de la semana (0-6): el día laborable. 0 es domingo, 6 es sábado. Algunos sistemas también aceptan 7 para domingo.

Expresiones cron comunes

  • 0 0 * * * — 0 0 * * * — Todos los días a medianoche.
  • 0 9 * * 1-5 — 0 9 * * 1-5 — Días laborables a las 9:00.
  • 0 0 1 * * — 0 0 1 * * — El primer día de cada mes a medianoche.
  • */15 * * * * — */15 * * * * — Cada 15 minutos.
  • 0 */4 * * * — 0 */4 * * * — Cada 4 horas en punto.

Errores comunes de cron

El error más frecuente es poner los campos en el orden incorrecto. Cron lee siempre primero el minuto y luego la hora, así que "0 9" significa las 9:00, no el minuto 9. Otra trampa es olvidar que la zona horaria del servidor determina cuándo se ejecuta cron. Si tu servidor está en UTC pero esperas hora local, los trabajos se dispararán a la hora equivocada.

Evita programar trabajos pesados exactamente a medianoche (0 0 * * *) porque muchos otros trabajos cron se ejecutan a la misma hora. Escalona tus trabajos unos minutos para evitar picos de carga. También cuidado con trabajos que tardan más en completarse que su intervalo: si un trabajo se ejecuta cada minuto pero dura 3 minutos, tendrás instancias solapadas.

Buenas prácticas

Redirige siempre la salida de cron a un archivo de log (>> /var/log/myjob.log 2>&1) para poder solucionar fallos. Usa rutas absolutas para comandos y scripts, ya que cron se ejecuta con un PATH mínimo. Prueba tu expresión con una herramienta como esta antes de desplegarla en producción.

Para necesidades de programación complejas, considera alternativas a cron como timers de systemd (Linux), Celery Beat (Python) o programadores en la nube (AWS EventBridge, Google Cloud Scheduler). Ofrecen funciones como lógica de reintentos, paneles de monitorización y ejecución distribuida que cron estándar no tiene.

Preguntas frecuentes

¿Puede cron ejecutar un trabajo cada 30 segundos?

No. La resolución mínima de cron es un minuto. Para ejecutar una tarea cada 30 segundos, prográmala cada minuto y añade un sleep de 30 segundos antes de una segunda ejecución dentro del mismo script. Alternativamente, usa un timer de systemd o un programador específico de lenguaje para intervalos sub-minuto.

¿Dónde se encuentra el archivo crontab?

Los crontabs de usuario se almacenan en /var/spool/cron/ (Red Hat/CentOS) o /var/spool/cron/crontabs/ (Debian/Ubuntu). Edita el tuyo con "crontab -e" en lugar de modificar los archivos directamente. El crontab del sistema está en /etc/crontab y se pueden colocar trabajos adicionales en /etc/cron.d/.