domingo, 14 de septiembre de 2014

Uso del Cron para programar tareas

  • Para ejecutar una tarea cada 10 minutos lo haremos de la siguiente forma:
0,10,20,30,40,50 * * * * /script.sh
En el ejemplo anterior, el fichero de script script.sh se ejecutará todos los días, todas las horas, cada 10 minutos.


  • Para ejecutar una tarea los días 10, 15, y 25 de cada mes a las 22:30:
30 22 10,15,25 * * /script.sh
  • Para ejecutar una tarea programada los lunes, miércoles, viernes y domingos a las 15:30:
30 15 * * 1,3,5,0 /script.sh
  • Si editamos directamente el fichero /etc/crontab con el superusuario root, debemos indicar, además de lo anterior, con qué usuario querremos ejecutar la tarea programa. Por ejemplo, para la anterior tarea:
30 15 * * 1,3,5,0 /script.sh
Deberemos indicar el usuario con que se ejecutará el script script.sh, de la siguiente forma:
30 15 * * 1,3,5,0 ajpdsoft /script.sh
Donde "ajpdsoft" es el nombre del usuario (que ha de existir y tener permisos de ejecución del script script.sh).

Ejemplos de tareas programadas en el crontab de GNU Linux

  • En este ejemplo vamos a explicar cómo realizar un script que haga una copia de seguridad de nuestros datos en un fichero comprimido. En primer lugar crearemos este fichero, utilizando "nano", "vi" o cualquier otro editor de texto plano:
nano copia_seguridad_diaria.sh
Como ejemplo del contenido de este fichero, podría ser:
cd /datos/facturacion
tar czf * copia_seguridad_facturacion.tar
cp copia_seguridad_facturacion.tar /copiaseguridad
Guardaremos el fichero copia_seguridad_diaria.sh. Para hacerlo un fichero ejecutable deberemos ejecutar el siguiente comando:
chmod 700 copia_seguridad_diaria.sh
Una vez preparado el script, añadiremos la tarea programada con el comando:
crontab -e
En el ejemplo, programaremos la tarea para que se ejecute a las 22:00 los lunes, martes, miércoles, jueves y viernes de la semana, indicando que sea el superusuario root quien la ejecute, la tarea quedará así:
00 22 * * 1,2,3,4,5 root /copia_seguridad_diaria.sh
También serviría indicar los días en la forma 1-5:
00 22 * * 1-5 root /copia_seguridad_diaria.sh
Nota: en este ejemplo, hemos indicado que será el superusuario root quien ejecute la tarea, obviamente esto sólo será posible si estamos añadiendo la tarea con este usuario.

No hay comentarios:

Publicar un comentario