menu

lunes, 4 de julio de 2011

Programar tareas en Linux

task

Muchas veces necesitamos realizar una tarea en ciertos momentos del día, o tal vez cada cierto tiempo, como por ejemplo: mantenimientos, respaldo de información, correr servicios, quizás reiniciarlos.

La utilidad es inmensa y depende de nuestras necesidades, en esta ocasión hablaremos sobre cron/crontab usado en los sistemas basados en Unix, después del salto mas información...




Cron/Crontab


Cron

Cron es un demonio que permite ejecutar tareas calendarizadas, inicia junto el sistema operativo, después busca en la carpeta /var/spool/cron/crontabs/ por el archivo crontab de cada usuario y los carga en memoria.

Después, cron, cada minuto examina los archivos crontab de los usuarios para ver si deben ejecutarse en ese minuto, debido a esto cuando modifiquemos el archivo crontab, no necesitaremos reiniciar el demonio. Como vemos, la menor unidad de tiempo que podemos usar es un minuto.


Crontab

Es el programa usado para instalar, desinstalar o mostrar los archivos usados por cron. Ya que, cada usuario tiene su propio crontab, cuando se haga uso de los comandos se trabajara sobre el crontab del usuario, es decir, si modificamos el archivo como root, modificaremos el crontab de root, si lo ejecutamos como un usuario normal, trabajaremos sobre el crontab de ese usuario.


Modificando nuestro Crontab

$ Crontab -e
Abrimos una terminal y tecleamos el comando de arriba, si es nuestra primera vez modificando, aparecerá una pantalla similar a la siguiente:

crontab
Variara dependiendo del sistema operativo y terminal...

Por ser la primera vez que este usuario modificara su crontab, sera preguntado con cual editor desea modificarlo, esto solamente es para la primera vez, para nuestro caso usaremos nano.

Nota: En versiones anteriores se utilizaba automáticamente el editor por defecto del sistema.

Aparecerá un pantalla con una serie de instrucciones sencillas sobre como utilizarlo. Esa forma es con el siguiente formato:

formatocrontab
Día de la semana comienza con domingo (0)

El asterisco simboliza cualquier valor, es decir, si lo colocamos en la parte correspondiente al minuto, se ejecutara cada minuto. Esta configuración es para cada comando en especifico, si tuviéramos 2 tareas, en la linea de abajo colocaríamos la siguiente . Algunos ejemplos de estas configuraciones:
  • 0 0 1 * * <comando>
Este comando se ejecutara en el minuto 0, a la hora 0, del primer día de cada mes.

  • 0,20,40 * * * * <comando>
Este comando se ejecutara cada 20 minutos, siempre

  • 30 08 10 05 * <comando>
Este comando se ejecutara a los 30 minutos, 8 AM, el día 10 de mayo.
(Quizás alguna felicitación para mama?)

  • */10 0-10 * * * <comando>
Este comando se ejecutara cada 10 minutos, en el rango de: las 0 horas hasta las 10 horas, como se ve, podemos especificar rangos.

Ademas de todas estas posibilidades, existen palabras clave que nos permiten ahorrarnos estos parámetros, a continuación se detallan un poco mas:

Palabras Clave
Palabra Equivalente
@yearly 0 0 1 1 *
@daily 0 0 * * *
@hourly 0 * * * *
@reboot En cada inicio
  • @hourly <comando>
Este comando se ejecutara cada hora.

Después de agregar las tareas que necesitemos nos quedara algo similar a la siguiente imagen:

crontab

Al finalizar los cambios, guardamos y los comandos se ejecutaran en el momento que especificamos.

Eliminando nuestro crontab

Solamente ingresamos el siguiente comando y nuestro archivo de crontab es eliminado:
$ crontab -r

Mostrando nuestro crontab

Para mostrar el contenido de nuestro archivo crontab, ingresamos:

$ crontab -l

Existen muchas mas opciones pero para una configuración básica estas son las bases, cualquier pregunta, sugerencia, sera bienvenida y pueden dejarla en la sección de comentarios, también pueden seguirnos en twitter o en facebook.

Mas información:

http://www.pantz.org/software/cron/croninfo.html
http://www.thegeekstuff.com/2009/06/15-practical-crontab-examples/
man crontab

No hay comentarios:

Publicar un comentario