[Manual] Usando el crontab en Linux

Bueno hoy es viernes y no hay que hacer nada ¿no creen?, ojala y así fuera pero hay bastante chamba, bueno regular, pero veamos un poco sobre como usar el famoso crontab que a veces me ha costado trabajo, bueno aquí les pondré un pequeño manual espero que les sea de utilidad, cualquier pregunta no duden, para eso están los comentarios.

terminal

Terminal

El crontab, es un archivo en donde podemos configurar tareas para que se ejecuten automáticamente en nuestro sistema, digamos por ejemplo descargar un archivo de respaldo diariamente,  o borrar ciertos archivos periódicamente, ejecutar un script que haga algo, etc, digamos que podemos automatizar las tareas, para no estar haciéndolas a mano.

Para poder ejecutar el crontab, regularmente no es necesario hacer nada, mas que ejecutar cierto comando y ya estará funcionando, en la mayoría de distribuciones que he probado (ubuntu,open suse, debian, gentoo)regularmente esta por default, de todos modos si surgen dudas están los comentarios.

También debemos de revisar que para poder ejecutarlo nuestro nombre de usuario debe de aparecer en /usr/lib/cron/cron.allow, o en dado caso que no aparezcamos dentro de la lista /usr/lib/cron/cron.deny.

Si sólo existe cron.deny  y está vacío, todos los usuarios pueden utilizar crontab. Si no el archivo existe, sólo el usuario root puede usar crontab. El permitir / denegar archivos constan de el nombre de usuario en cada línea.
Lo anterior no lo pude localizar correctamente en Open suse, de todos modos, utilicen en este caso acceso como root y se evitaran problemas.
Ahora para poder trabajar con el cron vamos a ver como podemos configurarlo o modificarlo.
Podemos usar linux-g5yh:/home # export EDITOR = vi para especificar un editor por default para editar el archivo del crontab, pueden usar pico, nano, etc, pero a mi me gusta mas el Vim o Vi
Ahora usaremos los siguiente comandos dependiendo de lo que deseemos hacer
linux-g5yh:/home #crontab-e Con este comando podremos editar nuestro archivo crontab, si no existe dicho archivo se crea.
linux-g5yh:/home #crontab-l Muestra el contenido del archivo crontab.
linux-g5yh:/home #crontab-r Eliminar el archivo crontab(ejecutar esta instrucción con cuidado).
linux-g5yh:/home #crontab-v Muestra la última vez que editó su archivo crontab. (Esta opción sólo está disponible en algunos sistemas.)
Ahora que ya sabemos como configurar el archivo del crontab, ahora veamos como podemos agregar tareas, a dicho archivo.
———————————————————————————————————————–

*     *   *   *    *  comando_a_ejecutar
-     -    -    -    -
|     |     |     |     |
|     |     |     |     +—– dia de la semana (0 – 6) (Domingo=0)
|     |     |     +——- mes(1 – 12)
|     |     +——— dia del mes (1 – 31)
|     +———– hora (0 – 23)
+————- minuto (0 – 59)

——————————————————————————————————————-

Bajo el anterior criterio vamos a poner un cron job que se ejecute a las 10 de la noche, el cual solo reinicia el apache server

linux-g5yh:/home #crontab-e

* 10,20  *  *  * /etc/init.d/apache2 restart

:wq  //guardamos el archivo en el vi

linux-g5yh:/home #

Ahora un ejemplo un poco mas difícil,  bajar un respaldo a las 2:20 am y a las 2:20 pm, bajar un segundo respaldo 25 minutos después, ejecutar el script de los respaldos cada 30 minutos los viernes.

linux-g5yh:/home #crontab-e

20 2,14  *  *  *  wget http://www.tudominio.com/logs/respaldo.backup

45 2,14  *  *  *  wget http://www.tudominio.com/logs/respaldo.backupSegundo

30 *  *  *  5  http://www.tudominio.com/generarrespaldos.php

:wq  //guardamos el archivo en el vi

linux-g5yh:/home #

Listo con esto creo que ya podemos empezar a trabajar con nuestro cronjob, y de paso como anotación para que no se me olvide, luego les pongo un manual de como usar el vi,

Fuente y más documentación en Ingles | Crontab – Quick reference

Related Photos

No related photos.

6 Responses

50 11 * * * curl -k http://rutadelcgi en laweb

Significa que todos los duias a las 11 50 am

xD
Saludos

03.20.2009

hola tengo una consulta acerca del crontab.. lo que yo necesito hacer es que me aparezca un mensaje en el entorno grafico diciendo que se van a apagar las computadoras.

de que manera puedo hacer esoo ???
tengo que ponerlo en algun lugar del script???

11.25.2009

Qué explicación tan sencilla y completa. Y yo que pensaba que crontab era más complicado… me has iluminado… Hasta luego.

05.03.2010

Buenas, necesito una ayudita. Hice un script en bash para realizar un backup de mi base de datos. Cuando lo ejecuto como root funciona como debe funcionar, pero cuando lo agrego en el crontab, no reconoce una de las lineas del script y en consecuencia no funciona. Parte del script:

#!/bin/bash

#Obtenemos el Espacio de memoria ocupado, expresado en %

ESPACIO_OCUPADO=`df /$DIR_BD | awk ‘{print $5}’ | grep -a %`

#Para verificar que el espacio_ocupado no supere un valor determinado.

#Quitamos el simbolo % para poder trabajar solo con numeros.

ESPACIO_ABSOLUTO=`expr match “$ESPACIO_OCUPADO” ‘\([0-9]*[0-9]\)’`

Esta ultima linea, no funciona cuando se ejecuta con el crontab. Lo que hace es quitarle el simbolo % para poder trabajar solo con mumeros.

Por que como root funciona correctamente y con el crontab no?

Cualquier ayudita se los agradeceria un monton.

Muchas gracias.-
Saludos.-

05.19.2010

Ejecuto un script php de esta manera:

*/1 * * * * /usr/bin/php /usr/local/polin/voice.php

Este descarga un archivo con wget.

El problema es que al dercargar el archivo lo hace en /root y no en /usr/local/polin

Alguien sabe como hago para que se descargue en el directorio donde esta el php?

Gracias

07.12.2010

porque no pones un soft link que lo que llegue a root lo pase a /usr/local/polin

creo que seria ln -s /root /usr/local/polin

debe de haber mas formas, pero igual y es una solucion

saludos!

Comentar

* Nombre, Email y Comentario son campos obligatorios

Recibe nuestro contenido por email

Vas a recibir un email con los artículos escritos durante el día.

Categorias

Historico de entradas publicadas