martes, 4 de septiembre de 2012

Linux – Programando tareas con Cron/Crontab

En el sistema operativo Unix, cron es un administrador regular de procesos en segundo plano (demonio) que ejecuta procesos o guiones a intervalos regulares (por ejemplo, cada minuto, día, semana o mes). Los procesos que deben ejecutarse y la hora en la que deben hacerlo se especifican en el fichero crontab.

El demonio cron inicia de /etc/rc.d/ o /etc/init.d dependiendo de la distribucion. Cron se ejecuta en el background, revisa cada minuto la tabla de tareas crontab /etc/crontab o en /var/spool/cron en búsqueda de tareas que se deban cumplir. Como usuario podemos agregar comandos o scripts con tareas a cron para automatizar algunos procesos. Esto es útil por ejemplo para automatizar la actualización de un sistema o un buen sistema de respaldos.

Crontab es un simple fichero de texto que guarda una lista de comandos a ejecutar en un tiempo especificado por el usuario. Crontab verificará la fecha y hora en que se debe ejecutar el script o el comando, los permisos de ejecución y lo realizará en el background. Cada usuario puede tener su propio archivo crontab, de hecho el /etc/crontab se asume que es el archivo crontab del usuario root, cuando los usuarios normales (e incluso root) desean generar su propio archivo de crontab, entonces utilizaremos el comando crontab.

Para poder entrar al fichero crontab y editar/agregar tareas debemos ejecutar:
crontab -e
Una vez hecho esto, se nos abrirá un fichero que podemos editar, la sintaxis a utilizar es la siguiente:
m h ddm M dds usr com
En donde:
  • m: Minuto en el que se debe ejecutar, su valor va de 0 a 59
  • h: Hora en el que se debe ejecutar, su valor va de 0 a 23
  • ddm: Día del mes en el que se debe ejecutar, su valor va de 1 a 31
  • M: Mes en el que se debe ejecutar, su valor va de 1 a 12
  • dds: Día de la semana en el que se debe ejecutar, su valor va de 0 a 7, 0 es Domingo
  • usr: Usuario que ejecutará el comando. Este campo, puede no incluirse
  • com: Comando que se ejecutará
Aquí dejo una imagen encontrada en Internet que la encontré super buena ya que donde es gráfica hace más fácil entender.



Algunos ejemplos para clarificar, si se fijan, no incluimos el campo usuario.

01 * * * * <fichero.sh>
Ejecuta fichero.sh todos los días al minuto 1 de cada hora. 
20 * * 1 6 <fichero.sh>
Ejecuta fichero.sh al minuto 20 de cada hora de los sábados de enero 
10 1 * 12 1 <fichero.sh>
Ejecuta fichero.sh a las 1:10hrs todos los lunes de diciembre 
45 19 1 * * <fichero.sh>
Ejecuta fichero.sh a las 19:45hrs del primero de cada mes 
00 5 * * 0 <fichero.sh>
Ejecuta fichero.sh a las 5 a.m. todos los domingos 
59 11 * 1-3 1,2,3,4,5 <fichero.sh>
Ejecuta fichero.sh a las 11:59hrs de lunes a viernes, de enero a marzo 
10,30,50 * * * 1,3,5 <fichero.sh>
Ejecuta fichero.sh En el minuto 10, 30 y 50 de todas las horas de los días lunes, miércoles y viernes 
* 12 1-10/2 2,8 * <fichero.sh>
Ejecuta fichero.sh todos los minutos de las 12 del día, en los días 1,3,5,7 y 9 de febrero y agosto. (El incremento en el tercer campo es de 2 y comienza a partir del 1) 
0 */5 1-10,15,20-23 * 3 <fichero.sh>
Ejecuta fichero.sh cada 5 horas de los días 1 al 10, el día 15 y del día 20 al 23 de cada mes y que el día sea miércoles 
45 * 10-25 * 6-7 <fichero.sh>
Ejecuta fichero.sh al minuto 45 de todas las horas de los días 10 al 25 de todos los meses y que el día sea sábado o domingo


Basado en información de: http://www.linuxtotal.com.mx/
http://usemoslinux.blogspot.com/


0 comentarios:

Publicar un comentario