Sistemas Operativos III Tareas Programadas Cron Jobs
Qué es cron? Cron proviene del nombre de un Titán de la mitología griega Cronos rey de los Titanes dios del tiempo «humano» del calendario de las estaciones de las cosechas hijo de Urano y Gea, y padre de Zeus.
Qué es cron? Como se define en las páginas del manual (man cron) cron es un demonio que ejecuta comandos programados. Permite a usuarios del S. O. Linux/Unix ejecutar automáticamente comandos o shell-scripts (secuencia de comandos) a una hora y/o fecha específica. Generalmente se utiliza para realizar tareas administrativas, como respaldos, pero puede utilizarse para ejecutar cualquier tarea.
Qué es cron? En prácticamente todas las distribuciones de Linux se usa la versión Vixie Cron, por el nombre de su desarrollador, Paul Vixie, uno de los grandes gurús de Unix
Iniciar cron cron es un demonio (servicio) y como tal: solo requiere ser iniciado una vez generalmente se inicia en el arranque del sistema a través del demonio init. el demonio de cron es crond en la mayoría de las distribuciones este servicio se instala automáticamente
Iniciar cron Para iniciar este servicio manualmente ejecutar: service cron start >> Starting crond: [ OK ] Depende de la distribución de linux 1. /etc/rc.d/init.d/crond start 2. /etc/init.d/crond start 3. /etc/init.d/cron start
Iniciar cron Para verificar sí esta en ejecución ejecutar: service cron status >> cron start/running, process 1040 Depende de la distribución de linux 1. /etc/rc.d/init.d/crond status 2. /etc/init.d/crond status 3. /etc/init.d/cron status
Utilizar cron Existen por lo menos tres formas distintas de utilizar el servicio cron: 1. A través de los directorios cron.* contenidos dentro del directorio /etc 2. Utilizando el archivo crontab que también se encuentran dentro del directorio /etc 3. Ejecutando el comando crontab Las dos primeras opciones solo están disponibles para el usuario root
Utilizar cron 1. directorios Al colocar un shell-script en cualquiera de los siguientes directorios, este se ejecutará: /etc/cron.hourly a cada hora (hourly) /etc/cron.daily diariamente (daily) /etc/cron.weekly semanalmente (weekly) /etc/cron.monthly mensualmente (monthly)
Utilizar cron 1. directorios Un ejemplo: script.sh #!/bin/sh #Generar respaldo de un directorio cd /home/fulano tar cf respaldo.tar * cp respaldo.tar /root/respaldos El archivo debe tener permiso de ejecución > ls - l script.sh - r w x - - - - - - 1 root root 116 Oct 3 09:30 script.sh
Utilizar cron 2. /etc/crontab Editar el archivo crontab del directorio /etc SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly
Utilizar cron 2. /etc/crontab Formato del archivo crontab (últimas líneas) minutos (0-59) horas (0-23) día del mes (1-31) mes (1-12) día de la semana (0-6) (domingo=0,... sábado=6) * * * * * usuario comando_a_ejecutar *» significa todos los valores válidos /» permite definir una repetición -» permite definir un rango,» permite definir varios valores
Utilizar cron 2. /etc/crontab Ejemplo Descripción 01 * * * * * Se ejecuta en el minuto 1 de cada hora de todos los días 25 9 * * * A las 9:25 a. m. de todos los días 25 21 * * * A las 9:25 p. m. de todos los días 00 7 * * 0 A las 7:00 a. m de todos los domingos * 7 * * Sun A cada minuto de las 7:00 a las 7:59 de todos los domingos 45 18 1 * * A las 6:45 p.m. del primero día de cada mes 01 * 21 3 * Al minuto 1 de cada hora del 21 de marzo 10 2 * 11 1 A las 2:10 a.m. de todos los lunes de noviembre 30 7 21 3 2 A las 7:30 a. m. del día 21 de marzo y que sea martes 30 7 21 3 * A las 7:30 a. m. del día 21 de marzo de todos los años 15 * * * 6 En el minuto 15 de cada hora de los días sábados
Utilizar cron 2. /etc/crontab Ejemplo Descripción 59 23 * 1,3 1-5 A las 11:59 p.m. de lunes a viernes, en enero y marzo 55 * 10-28 * 6 En el minuto 55 de todas las horas de los días 10 al 28 de todos los meses y que el día sea sábado 10,30,50 * * * 1,3,5 En el minuto 10, 30 y 50 de todas las horas de los días lunes, miércoles y viernes */10 10-16 * * * Cada diez minutos de las 10:00 a.m. a las 4:00 p.m. * 12 1-10/2 2,8 * Todos los minutos de las 12 a. m., en los días 1,3,5,7 y 9 de enero y mayo. 0 */6 1-10,15,20-25 * 2 Cada 6 horas en los días 1 al 10, del día 15 y del día 20 al 25 de cada mes y que el día sea martes 5/5 1/5 5 5 5 Cada 5 minutos empezando por el minutos 5 de las horas 1, 6, 11, etc. (cada 5 horas empezando a las 1 a. m.) del día 5 de mayo y que sea un viernes
Utilizar cron 2. /etc/crontab Sí este fuera parte del contenido del archivo crontab : 0 21 * * * root /usr/respaldodiario.sh 0 23 * * 5 root /usr/respaldosemanal.sh 0 7,20 * * * leo mail -s "S.O. OK leo@mail.com Cuándo se ejecutarían estas tareas?
Utilizar cron 3. crontab El comando crontab, en principio, está disponible para todos los usuarios Cada usuario puede tener un archivo crontab particular. En el directorio /var/spool/cron se genera un archivo cron para cada usuario Este archivo aunque es de texto, no debe editarse directamente. Depende de la distribución el directorio utilizado.
Utilizar cron 3. crontab crontab e crear o editar las tareas programadas utiza el editor por defecto (vi generalmente) cada usuario tendrá un archivo crontab. crontab l lista las tareas programadas del usuario actual. crontab r elimina todas las tareas progrmadas del usuario actual.
Controlar el acceso a cron Cron permite controlar que usuarios pueden o no utilizar su servicio. Esto se realiza a través de los siguientes archivos: /etc/cron.allow usuarios que pueden utilizar cron /etc/cron.deny usuarios que no pueden utilizar cron sí estos archivos no existen todos los usuarios pueden ejecutar crontab