crontab

crontab


Crontab es un archivo de texto que almacena uno o una lista de scripts o comandos a ejecutarse en un tiempo programado por el usuario; crontab se encarga de comparar la fecha y la hora del ordenador con la fecha y hora que se programo para ejecución del script o comandos, cada usuario puede tener su propio archivo crontab; este comando cuenta con 4 editores de texto, para su modificación.

Estructura: 

     crontab  <opcion>

Opciones: 

Para el uso de crontab debemos tener en cuenta las siguientes opciones:

  • - l   Permite visualizar por medio de la consola todos los procesos programados en crontab.
  • - e  Abre un editor de texto el cual nos permitirá crear, agregar o modificar un comando o lista de comandos para programar su ejecución.
  • - r  Permite eliminar que el proceso actual de crontab.

Programación de una tarea:


Para programar una tarea es necesario ejecutar el comando crontab con la opción -e para crear nuestra orden en un editor de texto.



En este caso como es la primera vez que utlizamos esta aplicacíon vamos a utilizar el editor de texto que nos recomienda el /bin/nano, entonces elegimos la opción 2.



A continuación se abre el editor de texto /bin/nano:



Una vez en el editor de texto tenemos que configurar el tiempo de ejecución de los comandos o scripts de la siguiente manera, con referencia a la siguiente estructura.

Estructura dentro del editor de texto: 

<mm> <hh> <dd> <mm> <wd> <comando_o_direccion_de comando>
  • mm   se especifican los minutos del 00 al 59.
  • hh     se delimita la hora desde 00 hasta 23.
  • dd     se establecen el día del mes del 01 al 31.
  • mm   se detalla el mes del 01 (enero)  al 12 (diciembre).
  • wd    se establece el día de la semana del 1 (lunes) al 7 (domingo).
  • comando_o_direccion_de comando   se específica el archivo con el conjunto de ordenes que se desea ejecutar en cierto tiempo ya especificado.

Símbolos auxiliares:


  • -   Se lo utiliza para establecer intervalos ya sen minutos, horas, días del mes o la semana,
  • ,   Se la utiliza para detallar los días, meses o días de la semana específicos.
  • *  Se lo emplea para no especificar dicha opción.


Ejemplo:

31 10 3-4 * 7,5 echo "ejemplo" >> newfile


Entonces estamos diciendo que: los domingos (7) y viernes (5), de cualquier mes (*), los días del 3 al 4, a las 10 de la mañana, con 31 minutos se ejecuta el comando echo cuyo resultado lo direcciona al archivo newfile.


APLICACIÓN


Crear un script que se ejecute todos los días lunes a las 7 de la mañana; el script debe crear una copia de respaldo del directorio /etc que contenga todos sus archivos de configuración, la carpeta de respaldo debe tener por nombre etc.backup.

a. Creamos y probamos el funcionamiento de nuestro script que realice las acciones pedidas.

  1. Utilizamos el editor de texto vim y a nuestro script lo nombramos script2.sh, con el comando: vim script2.sh


  2. Escribimos nuestro código por medio de comandos que realice la orden pedida.


  3. Una ves terminado cerramos y guardamos el vim con nuestro código con :wq, y ejecutamos nuestro archivo para verificar su funcionamiento, como estamos copiando un directorio necesitamos anteponer el comando sudo:  sudo sh script2.sh




  4. El comando se ejecuto correctamente:

  5. Comprobamos la tarea del comando: ls -l


b. Necesitamos que nuestro script se ejecute desde cualquier parte para esto lo copiamos al directorio /bin del directorio raíz, con el comando: sudo cp /home/dario/script2.sh /bin (anteponemos sudo porque estamos trabajando con un directorio root).


c. Como vamos a copiar un directorio del directorio raíz, es necesario anteponer el comando sudo, para lograr la ejecución de nuestro script, pero 
para no tener que loggear la contraseña en la ejecución programada le otorgamos permisos de super-usuario, con el comando sudo chmod u+s script2.sh.
Script con permisos de ejecución. lectura y escritura.

Comando, para el permiso de super-usuario:


Script con el permiso de super-usuario.



d. Ya creado nuestro script, vamos a lograr que su ejecución de forma automática. Ejecutamos el comando crontab -e  para abrir nuestro editor de texto, y especificamos el tiempo en que se ejecute nuestro script.

Abrimos el editor de texto de crontab:



Especificamos el tiempo: 00 7 * *  1 sudo script2.sh . El sript  por nombre script2.sh se ejecutara los días lunes a las 7 de la mañana de cualquier mes, cualquiera que sea el día.Para salir tecleamos Ctrl + X, y luego pulsamos Y para guardar los cambios y damos enter si estamos de acuerdo con el nombre.


e. Listo el día lunes en nuestra carpeta home de usuario tendremos al siguiente carpeta de respaldo:


Referencias:

http://blog.desdelinux.net/cron-crontab-explicados/
http://linux.die.net/man/5/crontab
https://help.ubuntu.com/community/CronHowto
http://www.youtube.com/watch?v=UlVqobmcPuM

No hay comentarios.:

Publicar un comentario