miércoles, 17 de diciembre de 2008

CRONTAB Tareas Programadas

Cron es un demonio que ejecuta tareas programadas, con se inicia automaticamente con el script que se encuentra en /etc/init.d/cron.

Crontab es un programa que se utiliza para programar tareas , mediante tablas y es una interfaz para pasarle las tareas a cron.

Cron se utiliza para realizar tareas programadas, que tareas? bueno las que ustedes necesiten, pueden ser actualizaciones, backups, descargas de archivos, etc.. etc..

Como dije anteriormente crontab se utiliza para pasarle las tareas al demonio cron, las opciones de crontab son:
-e : Edita una tarea para un usuario
-l : Lista las tareas del usuario
-r : Elemina las tareas

Lo ideas es no mezclar las tareas de cron, es decir, nosotros no vamos a modificar ningun archivo de configuracion o de los que se encuentren en /etc. Sino que vamos a ir agregando tareas con crontab.

Por lo tanto en un consola escribimos crontab -e para agregar una nueva tarea
# crontab -e

Vemos en el archivo lo siguiente
# m h dom mon dow command

Que significa esto? bueno voy uno por uno
# : Caracter que se utiliza para que el programa no tome como codigo lo que esta escrito allado, sino que omite esta linea
m : Minutos (0 a 59)
h : Hora (0 a 23)
dom : Dia del Mes (1-31)
mon : Mes del año (1-12)
dow: Dias de la semana (0-7)

Dicho esto, vamos a los ejemplos, si queremos que en navidad por ejemplo, realizar un backup de nuestro disco a otro hacemos lo siguiente:

# m h dom mon dow command
59 23 24 12 * dd if=/dev/hda of=/dev/hdb

(Aclaro que el comando es solo a modo de ejemplo)

Tambien podriamos querer que todas las semanas ver el tamaño de nuestro disco rigido y guardarlo en un archivo, la sintaxis seria

59 23 * * 7 df -h >/tmp/espacio.txt

Esto correrá el script a las 23:59 , el séptimo día de la semana, es decir, una vez por semana.

Ahora que quede bien en claro los asteriscos, se utilizan cuando no se especifica un mes, o un dia, ahora por ejemplo, digamos que queremos copiar todo nuestro home a un directorio llamado BKP, una vez por mes:

00 12 * 1 * cp /home/beagle/* /BKP

Analizamos de nuevo, se va a correr a las 12:00 del mediodía, en mes esta el asterisco, significa que todos los meses (no especificamos el mes), el 1 es el día del mes, es decir que este va a correr todos los primeros de mes, y el ultimo asterisco indica que va a correr cualquier día, es decir que no importa si cae lunes martes o miércoles, sino que el 1ro de cada mes corre el comando.

Ahora una vez que guardamos estas lineas y grabamos, podemos visualizar con crontab -l y eliminarlas con crontab -r.

Si se ponen a pensar, cron es muy muy útil ya que se pueden realizar tareas administrativas sin necesidad de estar en la maquina.

Cualquier comentario o duda nos vemos en el GULSIF =)

4 comentarios:

KZKG^Gaara dijo...

Hola amigo, estoy teniendo una duda en cuanto a lo que explicas.
Lo que deseo hacer es que la PC ejecute un script (el cual ya tengo listo y funciona perfectamente) todos los días; pero que sea además 2 veces al día.

¿Puedes ayudarme con esto por favor?

Bueno eso, muchas gracias por adelantado y espero tu respuesta.
Salu2

Beagle Skywalker dijo...

Perdon por lo tardia de mi respuesta, estaba de vacaciones = )
Mira si queres ejecutarlo en 2 horarios todos los dias, por ejemplo a las 10 de la mañana y a las 18 horas, la linea quedaria a asi
# m h dom mon dow command
00 10,18 * * * dd if=/dev/hda of=/dev/hdb

Saludos

KZKG^Gaara dijo...

No te preocupes, y gracias de todas formas por tu respuesta :)
Lo que hice hace unos días fué poner 2 lineas de comando, o sea que lo que puse fué:

59 9 * * * root /home/gaara/Temp/./updatekav-tavo.sh
59 14 * * * root /home/gaara/Temp./updatekav-tavo.sh

Anónimo dijo...

Amigo un favor si podrian apoyarme lo que sucede es que quiere agregar una tarea y como soy nuevo no me sale, agrego una tarea mediante el crontab y se ve que se agrega pero pasa el tiempo y no sucede nada, habra que configurar algo en el cron.
Mi sistema operativo es precise .Gracias
rpmedina@pucp.edu.pe