Herramientas de desarrollo · Generador de Crontab
Sintaxis de rango y paso cron: */15, 1-5, listas y cómo se combinan
· Cómo funciona
cron programación flujo de trabajo del desarrollador
Los pasos, rangos y listas son la parte de la sintaxis cron que la gente copia sin comprender. Esta publicación explica cada uno, cómo se anidan y sorpresas como que */7 no significa "cada siete días".
Cada 15 minutos, pero solo de 9 a 5: la expresión ingenua también se activa por la noche
“Cada quince minutos durante el horario de oficina” contiene dos restricciones independientes. El campo de minutos necesita marcas de cuartos de hora, mientras que el campo de horas necesita un lapso acotado. Escribir solo `*/15 * * * *` resuelve la primera mitad y aún produce ejecuciones durante toda la noche. La expresión debe codificar ambas restricciones antes de decir algo sobre los días laborables.
ToolAcre analiza los cinco campos de programación, no un comando. Comience con `*/15 9-17 * * 1-5`, luego inspeccione la oración y la vista previa de la siguiente ejecución. Esa verificación detecta el error común de poner `9-17` en la posición de los minutos o dejar el campo del día de la semana sin restricciones. El generador crea y explica una expresión; no instala ni ejecuta un trabajo.
Rangos: 1-5 y 9-17 como intervalos inclusivos dentro de un solo campo
Un guión crea un rango inclusivo dentro de un campo. `9-17` en la posición de la hora se expande a nueve valores: 9 a 17. Del mismo modo, `1-5` en la posición de día laborable se expande de lunes a viernes porque este analizador asigna el domingo a 0, el lunes a 1 y así sucesivamente. Ambos puntos finales participan, por lo que 17:00 está dentro del rango de horas seleccionado.
Los rangos no pueden abarcar el límite de un campo. El analizador rechaza una forma al revés como `17-9` y sugiere dividir los valores deseados en dos elementos de la lista. Esa negativa es útil porque las reglas de envoltura difieren entre los productos de programación. Aquí un rango siempre se mueve hacia arriba entre valores que ya satisfacen los límites numéricos o de nombres aceptados del campo.
Pasos: */15 y 9-17/2, y por qué el paso se reinicia en el límite inferior del campo en lugar de contar continuamente
Una barra diagonal elige cada enésimo valor desde un punto de partida. `*/15` en el campo de minutos comienza en su mínimo, cero, y se expande a 0, 15, 30 y 45. `9-17/2` comienza en 9 y produce 9, 11, 13, 15 y 17. El paso pertenece a un campo; no cuenta los minutos transcurridos entre límites horarios.
El analizador también acepta un comienzo simple con un paso. `5/15` en el campo de minutos significa 5, 20, 35 y 50 porque el punto final superior implícito es 59. Los pasos deben ser números enteros positivos y no pueden exceder el tamaño del rango completo del campo. Un paso cero, no numérico o de gran tamaño recibe un error de validación específico del campo en lugar de una interpretación supuesta.
Las listas pueden combinar valores, rangos y rangos escalonados en un campo
Las comas unen varias piezas dentro de un mismo campo. Un `1,15,30` simple nombra valores de tres minutos. Una entrada más elaborada puede combinar un valor único, un rango inclusivo y un rango escalonado: el `0,10-20/5,59` probado se expande a 0, 10, 15, 20 y 59. Los resultados duplicados se eliminan y los valores expandidos se ordenan antes de que los utilicen cálculos posteriores.
Esta gramática es compositiva pero aún limitada. Cada elemento de coma puede contener una barra y un rango debe tener exactamente dos puntos finales no vacíos. Una coma perdida, varias barras o un rango sin terminar se rechazan con un motivo para nombrar el campo. Eso hace que una expresión mixta sea revisable sin pretender que la puntuación mal formada tenga un significado convencional.
Ejemplo resuelto: */15 9-17 * * 1-5 — enumerando los minutos que produce y el caso límite 17:45
Para `*/15 9-17 * * 1-5`, los valores de minutos son 00, 15, 30 y 45; el horario es del 09 al 17; y los valores de los días laborables son de lunes a viernes. En cada día laborable incluido, el primer candidato es 09:00 y el último es 17:45. No hay 18:00 porque 18 está fuera del rango de horas.
La ventaja de la última ejecución ilustra por qué la expansión del campo supera a la taquigrafía conversacional. "Nueve a cinco" podría significar detenerse en 17:00 para un lector e incluir la hora completa de las cinco en punto para otro. El campo de hora de Cron selecciona un grupo de horas, luego el campo de minutos selecciona posiciones dentro de él. Si 17:45 no es deseado, el límite deseado necesita una expresión o lógica del lado de comando diferente.
Un paso de día del mes se expande desde el día 1 cada mes; no es un intervalo de una semana transcurrida
`*/7` en día del mes se expande desde el mínimo de ese campo de 1, lo que produce 1, 8, 15, 22 y 29 donde existen esas fechas. Cuando comience el próximo mes, el campo nuevamente comienza en 1. Por lo tanto, describe fechas seleccionadas del calendario, no un intervalo de siete días que avanza continuamente. A febrero y los meses más cortos simplemente les faltan algunas fechas importantes.
La misma sintaxis tiene un valor inicial diferente en otro campo. `*/7` minutos comienzan a las 0, mientras que `*/7` días del mes comienzan a las 1. El analizador de ToolAcre deriva la secuencia de cada especificación de campo y su vista previa busca fechas del calendario. Para una cadencia semanal real, restrinja el día de la semana en lugar de tratar los pasos del día del mes como duración transcurrida.
Los operadores no admitidos se rechazan en lugar de interpretarse como otro dialecto cron
Este analizador de cinco campos no implementa `L`, `W`, `#` o `?`. Esos caracteres no se descartan silenciosamente y no se presentan como sintaxis crontab portátil. También se rechazan seis campos, con una explicación de que la posición de liderazgo adicional pertenece a un estilo de planificador orientado a segundos en lugar del formato que lee esta ruta.
El límite es deliberado: minuto, hora, día del mes, mes y día de la semana son la gramática posicional completa aquí. Antes de mover una expresión de otro programador, cuente sus campos e identifique sus operadores. El generador puede validar su propio dialecto; no puede certificar Quartz, la sintaxis del calendario systemd o la variación de un servicio en la nube.
Conclusión: los pasos significan "comenzar desde la parte inferior del rango" y el generador explica una expresión de paso en palabras que puede verificar
Los rangos definen un intervalo inclusivo, las comas combinan partes y cortan los valores de muestra desde un inicio específico del campo. Leer esas operaciones en ese orden convierte una ficha densa en un conjunto finito que puede inspeccionarse. También explica aristas como 17:45 sin depender de una frase copiada cuyo autor pudo haber querido decir algo más.
Utilice el generador como superficie de revisión: ingrese la expresión, lea la descripción, inspeccione las advertencias y compare las siguientes cinco ejecuciones del reloj de pared en la zona deseada. Luego coloque los cinco campos verificados al lado del comando real en su propio entorno. La construcción del cronograma y la ejecución del trabajo siguen siendo responsabilidades separadas.