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.