Fundamentos de expresiones cron: los 5 campos explicados
Un desglose en lenguaje sencillo de la sintaxis cron estándar que puedes aplicar de inmediato
Probar explicador de cronPor qué las expresiones cron confunden incluso a desarrolladores experimentados
La mayoría de los errores de cron comienzan antes del despliegue, cuando la intención de la programación y la sintaxis divergen. Quieres que un trabajo se ejecute todos los días laborables a las 8 AM, pero un valor mal colocado lo cambia a cada hora o a cada día del mes. La causa raíz es casi siempre la misma: los cinco campos de una expresión cron son compactos, posicionales e implacables.
Una expresión cron estándar es una sola línea de cinco campos separados por espacios. Cada campo se asocia a una unidad de tiempo, y juntos definen una programación repetitiva. No hay etiquetas, no hay palabras clave por defecto, y no hay lugar para la ambigüedad una vez que el programador lee la línea.
Este artículo explica la estructura del formato cron de 5 campos en lenguaje sencillo. Aprenderás qué controla cada campo, cómo funcionan los tokens comunes y dónde ocurren las malinterpretaciones típicas. Cada ejemplo puede verificarse al instante en el Explicador de cron de Cronwise, que te da un desglose en lenguaje natural y una vista previa de las próximas ejecuciones según zona horaria para cualquier expresión que introduzcas.
Ya sea que estés escribiendo tu primera entrada de crontab o revisando una programación que escribió otra persona, entender estos cinco campos es la base de cualquier flujo de trabajo cron que siga después.
Los cinco campos: qué controla cada uno
Cada expresión cron estándar sigue el mismo formato posicional. De izquierda a derecha, los cinco campos son:
| Posición | Campo | Valores permitidos | Descripción |
|---|---|---|---|
| 1 | Minuto | 0 – 59 | El minuto de la hora en que se ejecuta el trabajo |
| 2 | Hora | 0 – 23 | La hora del día (formato de 24 horas) |
| 3 | Día del mes | 1 – 31 | El día del calendario |
| 4 | Mes | 1 – 12 | El mes del año |
| 5 | Día de la semana | 0 – 7 | El día de la semana (0 y 7 ambos representan domingo) |
Un ejemplo concreto aclara la correspondencia. La expresión 30 8 * * 1-5 significa: en el minuto 30, de la hora 8, cada día del mes, en cada mes, pero solo de lunes a viernes. En lenguaje sencillo: 8:30 AM, de lunes a viernes.
El asterisco (*) es un comodín que coincide con cada valor permitido para ese campo. Cuando lo veas, léelo como "cada" o "todos". Así que * * * * * significa cada minuto de cada hora de cada día — la programación más frecuente posible en cron estándar.
Tokens comunes y cómo funcionan
Más allá del comodín asterisco, los campos cron soportan varios tokens que te permiten expresar rangos, intervalos y listas sin escribir entradas separadas.
Coma (Lista)
Una coma separa valores individuales. 0 9,12,18 * * * se ejecuta a las 9:00 AM, 12:00 PM y 6:00 PM todos los días. Cada valor en la lista se trata de forma independiente.
Guion (Rango)
Un guion define un rango continuo. 0 9-17 * * * se ejecuta al inicio de cada hora desde las 9:00 AM hasta las 5:00 PM. Los rangos son inclusivos en ambos extremos.
Barra (Paso)
Una barra define un intervalo. */15 * * * * se ejecuta cada 15 minutos, comenzando en el minuto 0. Puedes combinar un rango con un paso: 0-30/10 * * * * se ejecuta en los minutos 0, 10, 20 y 30 de cada hora.
Combinación de tokens
Los tokens se pueden mezclar dentro de un solo campo. 0 8-12,18 * * 1-5 se ejecuta al inicio de las horas 8 a 12 y también a la hora 18, pero solo entre semana. Cada campo se evalúa de forma independiente, y el programador se ejecuta cuando los cinco campos coinciden simultáneamente.
Para una guía más detallada de estrategias de lectura, consulta Cómo leer expresiones cron rápidamente, que cubre modelos mentales para interpretar expresiones de un vistazo.
Cómo interpretar programaciones reales
Leer una expresión cron correctamente significa traducir cada campo en orden y luego combinarlos en una sola oración. Aquí hay ejemplos prácticos con sus equivalentes en lenguaje sencillo:
| Expresión | Significado | Cuándo usarla | Notas de riesgo |
|---|---|---|---|
0 0 * * * | Medianoche cada día | Trabajos batch diarios, rotación de logs | Carga pesada si muchos trabajos comparten este horario |
*/5 * * * * | Cada 5 minutos | Verificaciones de salud, sondeo de colas | Alta frecuencia; confirma que el trabajo es idempotente |
0 9 1 * * | 9:00 AM el 1.° de cada mes | Reportes mensuales | Los meses con menos de 31 días se comportan normalmente |
30 2 * * 0 | 2:30 AM cada domingo | Ventana de mantenimiento semanal | Puede coincidir con transiciones de horario de verano |
0 */2 * * 1-5 | Cada 2 horas entre semana | Sondeo en horario laboral | Se ejecuta a las 0, 2, 4 … 22 — no solo en horario laboral |
El último ejemplo es una malinterpretación común. */2 en el campo de hora significa cada segunda hora desde las 0, no cada dos horas durante el horario laboral. Si solo quieres de 9 AM a 5 PM, necesitas 0 9-17/2 * * 1-5 en su lugar. Este es exactamente el tipo de error sutil que el explicador de Cronwise detecta al mostrarte las próximas 10 ejecuciones programadas en tu zona horaria.
Casos límite y límites de campos
El formato de 5 campos tiene límites que son fáciles de olvidar. Entenderlos previene fallos silenciosos.
Interacción entre día del mes y día de la semana
En cron estándar, cuando tanto el día del mes (campo 3) como el día de la semana (campo 5) están establecidos en valores que no son comodines, la mayoría de las implementaciones los tratan como una unión: el trabajo se ejecuta si cualquiera de las condiciones es verdadera. Esto significa que 0 9 15 * 1 no significa "el 15 si es lunes". Significa "cada 15 del mes y cada lunes". Esta es una de las sorpresas más frecuentemente reportadas en cron.
Límites de mes y día de la semana
Establecer el día del mes en 31 significa que el trabajo solo se ejecutará en meses que tienen 31 días (enero, marzo, mayo, julio, agosto, octubre, diciembre). Se omitirá silenciosamente en meses más cortos. De manera similar, los valores 0 y 7 para el día de la semana ambos representan domingo, pero mezclarlos en la misma expresión puede causar confusión durante las revisiones de código.
Dependencia de zona horaria
Una expresión cron no contiene información de zona horaria por sí misma. El programador interpreta las horas en la zona horaria que esté configurado para usar, que puede ser UTC, la hora local del servidor o una anulación explícita. Si tu equipo abarca múltiples zonas horarias, siempre confirma la configuración de zona horaria del programador antes de desplegar. Cronwise te permite seleccionar cualquier zona horaria IANA y previsualizar las ejecuciones en consecuencia.
Aplica lo que sabes en el flujo de trabajo de Cronwise
Una vez que entiendas los cinco campos, el siguiente paso es pasar de leer expresiones cron a construirlas con confianza. Cronwise ofrece dos caminos complementarios para esto.
Primero explica, luego genera
Empieza con el Explicador de cron para verificar una expresión existente. Pégala, lee el resumen en lenguaje natural y revisa la tabla de ejecuciones. Si la programación no es lo que pretendías, cambia al Generador de cron para construir la expresión correcta visualmente, campo por campo. El generador elimina las conjeturas de sintaxis al permitirte seleccionar valores de menús desplegables y pestañas.
Lista de verificación antes del despliegue
| Verificación | Por qué importa | Criterio de aprobación |
|---|---|---|
| El resumen en lenguaje natural coincide con la intención | Detecta errores de orden de campos | La oración del resumen se alinea con tu objetivo de programación |
| Las marcas de tiempo de ejecución son correctas | Detecta mal uso de tokens (rangos, pasos) | Las primeras 5 ejecuciones coinciden con las fechas y horas esperadas |
| La zona horaria coincide con el entorno objetivo | Previene ejecución desfasada por horas | La zona horaria seleccionada es igual a la zona horaria configurada del programador |
| Sin advertencias de validación | Detecta patrones riesgosos tempranamente | Cero advertencias o cada advertencia aceptada intencionalmente |
Para una guía completa del constructor visual, lee Generador visual de cron: flujo de trabajo paso a paso, que cubre navegación de pestañas, presets guardados y opciones de exportación.
Conclusión: despliega con confianza
El formato cron de 5 campos es engañosamente simple: minuto, hora, día del mes, mes y día de la semana. Dominarlo significa conocer no solo las posiciones de los campos sino también cómo se combinan los tokens, dónde se esconden los casos límite y por qué una verificación de validación de 10 segundos vale la pena cada vez.
Aquí están las reglas clave a llevar contigo:
- Lee los campos de izquierda a derecha: minuto, hora, día, mes, día de la semana.
- Un asterisco significa "cada" — no es un marcador de posición ni un valor predeterminado.
- Rangos, listas y pasos se pueden combinar, pero cada campo se evalúa de forma independiente.
- Día del mes y día de la semana forman una unión cuando ambos no son comodines — no una intersección.
- Siempre verifica la zona horaria del programador y previsualiza las próximas ejecuciones antes de desplegar.
Cronwise está diseñado para hacer esta verificación rápida. Pega una expresión, lee la explicación, verifica las ejecuciones y despliega con confianza. Explora todos los artículos sobre cron en Cronwise para seguir aprendiendo, o ve directamente a la herramienta.