Una guía para las expresiones Cron

1. Información general

En pocas palabras, cron es una utilidad básica disponible en sistemas basados ​​en Unix. Permite a los usuarios programar tareas para que se ejecuten periódicamente en una fecha / hora específicas. Y, naturalmente, es una gran herramienta para automatizar muchas ejecuciones de procesos que de otra manera requerirían la intervención humana.

Cron se ejecuta como un proceso demonio; esto significa que solo necesita iniciarse una vez y seguirá ejecutándose en segundo plano. Este proceso hace uso de crontab para leer las entradas de los horarios y da inicio a las tareas.

Con el tiempo, el formato de expresión cron se adoptó ampliamente y muchos otros programas y bibliotecas lo utilizan.

2. Trabajar con Crontab

Un programa cron es un archivo de texto simple ubicado en / var / spool / cron / crontabs en sistemas Linux. No podemos editar los archivos crontab directamente ; necesitamos acceder a él usando el comando crontab .

Por ejemplo, para abrir el archivo crontab , necesitamos activar este comando:

crontab -e

Cada línea en crontab es una entrada con una expresión y un comando para ejecutar:

* * * * * /usr/local/ispconfig/server/server.sh

Esta entrada ejecuta el script mencionado cada minuto.

3. Expresión de Cron

Vamos a entender el cron expresión; consta de cinco campos:

3.1. Caracteres especiales en expresión

  • * (todo) : especifica que el evento debe ocurrir para cada unidad de tiempo. Por ejemplo, "*" en el campo < minuto> significa "por cada minuto"
  • ? (cualquiera) : se utiliza en los campos < día del mes> y < día de la semana> para indicar el valor arbitrario; ignore el valor del campo. Por ejemplo, si queremos disparar un script el "5 de cada mes" independientemente del día de la semana en esa fecha, entonces especificamos un " ? ”En el < día de la semana> campo
  • - (rango) : determina el rango de valores. Por ejemplo, " 10-11 " en campo significa "10 y 11 horas"
  • , (valores) : especifica varios valores. Por ejemplo, " LUN, MIÉ, VIE" en el campo < día de la semana> significa en los días "lunes, miércoles y viernes"
  • / (incrementos) : especifica los valores incrementales. Por ejemplo, un "5/15" en el campo < minuto> significa "5, 20, 35 y 50 minutos de una hora".
  • L (último) : tiene diferentes significados cuando se usa en varios campos. Por ejemplo, si se aplica en el campo < día del mes> , significa el último día del mes, es decir, "31 de enero" y así sucesivamente según el mes calendario. Se puede utilizar con un valor de compensación, como " L-3 ", que denota el "tercer al último día del mes calendario". En el < día de la semana> , especifica el "último día de la semana". También se puede utilizar con otro valor en < día de la semana> , como " 6L ", que denota el "último viernes".
  • W (día de la semana) : determina el día de la semana (de lunes a viernes) más cercano a un día determinado del mes. Por ejemplo, si especificamos “ 10W ” en el campo < día del mes> , entonces significa el “día de la semana cercano al 10 de ese mes”. Entonces, si el "10" es un sábado, entonces el trabajo se activará el "9", y si el "10" es un domingo, entonces se activará el "11". Si especificamos “ 1W ” en el < día del mes> y si el “1º” es el sábado, el trabajo se activará el “3º”, que es el lunes, y no volverá al mes anterior.
  • # : Especifica la ocurrencia " N -ésima" de un día de la semana del mes, por ejemplo, "3er viernes del mes" se puede indicar como " 6 # 3 "

3.2. Ejemplos de expresiones de cron

Veamos algunos ejemplos de expresión cron usando las combinaciones de campos y caracteres especiales:

A las 12:00 pm (mediodía) todos los días:

0 12 * * ?

Cada 5 minutos comenzando a la 1 pm y terminando a la 1:55 pm y luego comenzando a las 6 pm y terminando a las 6:55 pm, todos los días:

0/5 13,18 * * ?

Cada minuto a partir de la 1 pm y termina a la 1:05 pm, todos los días:

0-5 13 * * ?

A la 1:15 pm y a la 1:45 pm todos los martes del mes de junio:

15,45 13 ? 6 Tue

A las 9:30 am todos los lunes, martes, miércoles, jueves y viernes:

30 9 ? * MON-FRI

A las 9:30 am del día 15 de cada mes:

30 9 15 * ?

A las 6 pm del último día de cada mes:

0 18 L * ?

A las 6 pm del 3 al último día de cada mes:

0 18 L-3 * ?

A las 10:30 am del último jueves de cada mes:

30 10 ? * 5L

A las 10 a. M. Del tercer lunes de cada mes:

0 10 ? * 2#3

A las 12 a. M. De la medianoche todos los días durante cinco días a partir del día 10 del mes:

0 0 10/5 * ?

4. Cron Special Strings

Además de los campos especificados en la expresión cron, también hay soporte para algunos valores especiales predefinidos, que podemos usar en lugar de los campos:

  • @reboot : se ejecuta una vez al inicio
  • @yearly o @annualy : se ejecuta una vez al año
  • @monthly : se ejecuta una vez al mes
  • @weekly - ejecutar una vez a la semana
  • @daily o @midnight : ejecutar una vez al día
  • @hourly - ejecutar cada hora

5. Conclusión

En este artículo rápido, hemos explorado los trabajos cron y crontab .

También hemos visto una serie de ejemplos de expresiones que podemos usar en nuestro trabajo diario, o simplemente inferir otras expresiones.