sábado, 26 de octubre de 2013

Ejecución de procesos con crontab en linux

En la aterior entrada comenté como realizar la planificación de procesos a través de un EJB.  Sin embargo es posible que en ciertas ocasiones lo que necesitemos sea ejecutar periodicamente algún script o programa que realice una tarea. En ejemplo podría ser el ejecutar un script que cada cierto tiempo realice una limpieza de archivos temporales.

En el caso de linux tenemos el comando crontab que nos permite registrar la ejecución de un proceso cada cierto tiempo a través de expresiones cron.

Una expresión cron es un estandar para definir momentos periodicos en lo que lanzar un proceso. 

El funcionamiento del comando crontab es muy sencillo. Por un lado tenemos:

 
$ crontab -l
 

El cual nos mostrará una lista de lista de tareas registradas mediante el comando crontab asociados al usuario activo en el momento. En el caso de que el usuario con tenga ningún proceso registrado entonces aparecerá el mensaje no crontab for usuario.


 
$ crontab -l
$ no crontab for luis
 

por otro lado para añdir un nuevo proceso a ejecutar tenemos:

 
$ crontab -e
 




Esto abrirá un editor donde poder introducir un nuevo proceso. Simplemente será necesario añadir una nueva línea con una expresión cron y el comando a ejecutar.



  Minuto    Hora    Día_Mes    Mes    Día_de_la_semana    Comando
   *     *     *     *       *        comando_a_ejecutar


Veamos algunos ejemplos de expresiones cron:

Ejecutar un proceso todos los días a las 12:30 horas



 20 12 * * * comando_a_ejecutar
 

 Ejecutar un proceso cada 15 minutos


 Opción 1:

  0,15,30,45 * * * * comando_a_ejecutar

 Opción 2:

  */15 * * * * comando_a_ejecutar
 

Ejecutar un proceso todos los lunes a las 12:30


 20 12 * * 1 comando_a_ejecutar
 

Como he comenatdo con anterioridad con crontab -e se nos abre un editor para añadir o modificar la lista de procesos registrados. Sin embargo también es posible tener un archivo con los procesos que se desemos que ejecute el crontab y registrarlos. Para ello usar:


 $ crontab nombre_archivo
 

Existe un archivo de ejemplo: /etc/crontab


 

No hay comentarios:

Publicar un comentario