Escribir expresiones Cron para programar tareas

Cron es una utilidad de software ampliamente utilizada disponible en sistemas operativos similares a Unix que se utilizan con el propósito de programar trabajos. Ciertos programas o secuencias de comandos que pueden ser necesarios para ejecutarse ocasionalmente se agregan como un trabajo Cron y se define un cronograma para describir cuándo ejecutar este trabajo. Las expresiones cron proporcionan una forma de especificar este horario. Además, las expresiones de Cron se usan ampliamente en diferentes aplicaciones y bibliotecas para expresar programaciones complejas basadas en el tiempo para varios propósitos. Ejemplos de programación de Cron: una expresión de Cron está diseñada para especificar en qué fecha y hora se debe ejecutar la tarea programada. Usando expresiones de Cron, podemos especificar horarios como los siguientes.

  • Corre cada minuto cada una hora.
  • Ejecute cada hora, a partir de la marca de 15 minutos de la hora.
  • Corre cada hora, excepto las horas entre las 02:00 a.m. y 05:00 a. m.

La lista anterior proporciona una lista muy básica de programaciones que se pueden escribir usando una sola expresión cron. Formato de expresión cron: una expresión cron es una string simple compuesta de entre 6 y 7 campos, cada campo separado por un espacio en blanco. Las expresiones cron más comunes que constan de 7 campos, que denotan las distintas denominaciones de tiempo, se especifican a continuación. De los 7 campos, los primeros 6 son obligatorios, mientras que el último campo (<año>) es opcional.

<seconds> <minutes> <hours> <day-of-month> <month> <day-of-week> <year>

Con base en los valores especificados para cada uno de los componentes anteriores, se pueden crear cronogramas complejos. Caracteres especiales utilizados en las expresiones Cron:

Personaje Sentido Ejemplo
* Todos. Representa que la programación debe ejecutarse para cada unidad de tiempo Un «*» en el campo de minutos indica que el programa se ejecuta cada minuto 
? Ningún. Representa cualquier valor arbitrario. Solo se puede usar en los campos de día del mes y día de la semana. A «?» en el campo de día del mes no se usará el día del mes para decidir el cronograma ya que aquí se acepta cualquier valor
Rango. Representa un rango continuo de valores. El uso de «5-8» en el campo <hora> indica las horas 5, 6, 7 y 8
, Valores Múltiples. Separa una lista de diferentes valores. El uso de «5, 6, 10» en el campo <hora> indica las horas 5, 6 y 10
/ Incremento. Especifica la cantidad por la cual incrementar los valores de un campo 3/5 en el campo de minutos indica los minutos 3, 8, 13,…, 58 de una hora. */10 en el campo de minutos indica los minutos 0, 10, 20…, 60

Creación de un horario: con los campos especificados anteriormente, se puede usar una combinación de valores para crear los horarios deseados usando expresiones Cron. Como ejemplo, intentemos entender cómo construir algunas expresiones cron de muestra.

  1. Ejecutar una vez a las 09:23:15 am de cada día: dado que el programa se ejecuta todos los días, todos los meses y todos los años, estos campos estarán marcados con *. Para el día de la semana o el día del mes, tenemos que usar un «?» para uno y un “*” para el otro (ambos no pueden tener “?” o “*” simultáneamente). Además, el campo de la hora será 9, el campo de los minutos será 23 y el campo de los segundos será 0. Por lo tanto, la expresión es 0 9 23 * * ? *.
  2. Ejecutar cada minuto comenzando a las 06:00 pm y finalizando a las 10:00 pm, todos los días – El horario debe ejecutarse al inicio de cada minuto, es decir, el segundo 0 de cada minuto. Así, el segundo campo es 0 y el campo de los minutos es *. El horario tiene un rango de 06:00 pm a 10:00 pm. Esto se puede expresar como 18-22 ya que las horas se analizan en la escala 0-23. Así, la expresión es: 0 * 18-22 * * ? *.
  3. Ejecutar cada 5 minutos comenzando a las 04:00 p. m. y finalizando a las 04:55 p. m. todos los días: para ejecutar el programa cada 5 minutos, el incremento que se utilizará es 5 en el campo de la hora de la siguiente manera 0/5. Para el campo de la hora, dado que la programación se ejecutará solo dentro de la hora a las 04:00 pm, el valor a utilizar es solo 16. La expresión es, por lo tanto: 0 0/5 16 * * ?.

Comprensión de las expresiones cron: a continuación, se incluyen más ejemplos de expresiones cron y lo que significan:

Expresión Sentido
0 */5 * ? * * Una vez cada cinco minutos
0 20, 30, 45 * ? * * Cada hora en los minutos 20, 30 y 45 de la hora (Así tres veces en cada hora)
0 30, 45 14 ? 1-5 lunes A las 14:30 y 14:45 todos los lunes de los meses de enero a mayo (1-5)
0 0 9 ? * LUN-VIE Cada 09:00 am de lunes a viernes
15 30 * ? * * En el segundo 15 del minuto 30 de cada hora. Por ejemplo, 10:30:15, 11:30:15, …
25 30 10 * * ? 2021 A las 10:30:25 am todos los días del año 2021
0 20 8 ? * 2L 2020-2022 A las 08:20 am todos los últimos martes de cada mes para los años 2020, 2021 y 2022

Uso de expresiones cron con comandos en Unix: en Unix, se puede especificar una lista de comandos de shell, junto con los programas de ejecución, mediante una crontab (tabla cron). La sintaxis de una entrada crontab es la expresión de programación + el comando de shell que se ejecutará. Por lo tanto, el formato es el siguiente.

<seconds> <minutes> <hours> <day-of-month> <month> <day-of-week> <year> <shell-command>

Ejemplo: por ejemplo, la siguiente entrada crontab ejecuta un programa de shell denominado clear_logs.sh a las 22:30 (10:30 p. m.) todos los sábados.

0 30 22 ? * SAT /home/scripts/clear_logs.sh

Notas sobre el uso de expresiones cron:

  • Los campos Día del mes y Día de la semana no se pueden especificar con el mismo valor simultáneamente en la misma expresión cron. Si uno de los dos valores está representado por un * , el otro debe estar representado por ?
  • Al establecer horarios de programación para que ocurran entre las 12:00 a. m. y la 1:00 a. m., los cambios relacionados con el horario de verano podrían provocar la omisión o repetición del encendido programado.
  • Si fuera necesario, la expresión podría haberse dividido en 2. Por ejemplo, para representar una programación que se activa cada minuto excepto entre las 03:00 am y las 06:00 am, serían necesarias las siguientes dos expresiones: 0 * 0-2 * * ? para ejecutar la programación cada minuto, entre las 00:00 y las 03:59 y la otra expresión 0 * 6-23 * * ? para funcionar cada minuto, entre las 06:00 y las 23:59.

Publicación traducida automáticamente

Artículo escrito por tabmir y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *