jueves, 1 de marzo de 2012

CREACIÓN & CONFIGURACIÓN DE LINUX - UNIX CRON

Hola en esta oportunidad mostrare el manejo de algo muy utilizado para el manejo de procesos automatizados, es el manejo de Cron en Linux y/o Unix.

Para el desarrollo de esta solución DUMMY se ha aplicado una configuración en la cual se requiere de tener los siguientes archivos:

• linuxCronCRA.cron = Archivo utilizado para la creación de un crontab especifico del usuario Linux.
Aquí se configurara la periodicidad de ejecución del proceso respectivo.

• linuxCronCRGA.sh = Linux Shell Script encargado de ejecución de un proceso cada cierto tiempo configurado.

• logLinuxCronCRGA.txt = Archivo Log generado por la ejecución del Linux Shell Script.


I. CONFIGURACIÓN DE CRON: (linuxCronCRA.cron)
Aquí se creara un archivo para la ejecución periódica del Script, en base a unos estándares de configuración y especificando la ruta de ubicación de dicho Script.

* * * * * Script a ser ejecutado.
| | | | |____ Día de la semana (0 - 7) (Domingo=0 o 7)
| | | |_____ Meses (1 - 12)
| | |_______ Día del Mes(1 - 31)
| |________ Hora (0 - 23)
|_________ Minutos (0 - 59)

MINUTO = Controla el minuto de la hora en que el comando será ejecutado, este valor debe de estar entre 0 y 59.

HORA = Controla la hora en que el comando será ejecutado, se especifica en un formato de 24 horas, los valores deben estar entre 0 y 23, 0 es medianoche.

DIA DEL MES = Día del mes en que se quiere ejecutar el comando. Por ejemplo se indicaría 20, para ejecutar el comando el día 20 del mes.

MES = Mes en que el comando se ejecutará, puede ser indicado numéricamente (1-12), o por el nombre del mes en inglés, solo las tres primeras letras.

DIA DE SEMANA = Día en la semana en que se ejecutará el comando, puede ser numérico (0-7) o por el nombre del día en inglés, solo las tres primeras letras. (0 y 7 = domingo).

USUARIO = Usuario que ejecuta el comando.

COMANDO = Comando, script o programa que se desea ejecutar. Este campo puede contener múltiples palabras y espacios.


Un asterisco * como valor en los primeros cinco campos, indicará inicio-fin del campo, es decir todo. Un * en el campo de minuto indicará todos los minutos.

01 * * * * = Se ejecuta al minuto 1 de cada hora de todos los días.
15 8 * * * = A las 8:15 a.m. de cada día
15 20 * * * = A las 8:15 p.m. de cada día
00 5 * * 0 = A las 5 a.m. todos los domingos
* 5 * * Sun = Cada minuto de 5:00a.m. a 5:59a.m. todos los domingos
45 19 1 * * = A las 7:45 p.m. del primero de cada mes
01 * 20 7 * = Al minuto 1 de cada hora del 20 de julio
10 1 * 12 1 = A la 1:10 a.m. todos los lunes de diciembre
00 12 16 * Wen = Al mediodía de los días 16 de cada mes y que sea Miércoles
30 9 20 7 4 = A las 9:30 a.m. del día 20 de julio y que sea jueves
30 9 20 7 * = A las 9:30 a.m. del día 20 de julio sin importar el día de la semana
20 * * * 6 = Al minuto 20 de cada hora de los sábados
20 * * 1 6 = Al minuto 20 de cada hora de los sábados de enero
23 0-23/2 * * * = A los 23 minutos después de la media noche, 2am, 4am, todos los días.
0 22 * * 1-5 = A las 10 pm los fines de semana.

También es posible especificar listas en los campos. Las listas pueden estar en la forma de 1,2,3,4 o en la forma de 1-4 que sería lo mismo. Cron, de igual manera soporta incrementos en las listas, que se indican de la siguiente manera:

59 11 * 1-3 1,2,3,4,5 = A las 11:59 a.m. de lunes a viernes, de enero a marzo
45 * 10-25 * 6-7 = Al minuto 45 de todas las horas de los días 10 al 25 de todos los meses y que el día sea sábado o domingo
10,30,50 * * * 1,3,5 = En el minuto 10, 30 y 50 de todas las horas de los días lunes, miércoles y viernes
/15 10-14 * * * = Cada quince minutos de las 10:00a.m. a las 2:00p.m.
* 12 1-10/2 2,8 * = Todos los minutos de las 12 del día, en los días 1,3,5,7 y 9 de febrero y agosto. (El incremento en el tercer campo es de 2 y comienza a partir del 1)
0 */5 1-10,15,20-23 * 3 = Cada 5 horas de los días 1 al 10, el día 15 y del día 20 al 23 de cada mes y que el día sea miércoles
3/3 2/4 2 2 2 = Cada 3 minutos empezando por el minuto 3 (3,6,9, etc.) de las horas 2,6,10, etc (cada 4 horas empezando en la hora 2) del día 2 de febrero y que sea martes


En nuestro caso el archivo: linuxCronCRA.cron, para ejecución periódica es simple solo deberá ejecutarse 1 vez cada minuto y contendrá:

#!/bin/ksh
# EJECUCION PERIODICA DE [SHELL] - [CRON] #
*/1 * * * * /home/javaman/Desktop/linuxCronCRGA/linuxCronCRGA.sh


Para poder crear/actualizar el archivo propio de crontab por usuario se debe de ejecutar el comando:
$> crontab linuxCronCRA.cron


II. CONFIGURACIÓN DE LINUX SHELL SCRIPT: (linuxCronCRGA.sh)
Este Script simplemente lo que hace es mandar a imprimir un mensaje concatenado con la fecha actual a otro archivo de Log en base a la configuración periódica previa. Aquí se debería ingresar también datos como:
- Lógica de negocio.
- Acceso a BD.
- Etc.


#!/bin/ksh
# TEST LINUX CROM #
cadena1="LA FECHA IMPRESA ES: "
cadena2=`date`
ruta=/home/javaman/Desktop/linuxCronCRGA/logLinuxCronCRGA.txt
echo $cadena1$cadena2 >> $ruta


III. GENERACIÓN EN ARCHIVO DE LOG: (logLinuxCronCRGA.txt)
El contenido del archivo log generado se visualizara de esta manera.
LA FECHA IMPRESA ES: Thu Nov 3 10:03:01 PDT 2011
LA FECHA IMPRESA ES: Thu Nov 3 10:04:01 PDT 2011
LA FECHA IMPRESA ES: Thu Nov 3 10:05:01 PDT 2011
LA FECHA IMPRESA ES: Thu Nov 3 10:06:01 PDT 2011
LA FECHA IMPRESA ES: Thu Nov 3 10:07:01 PDT 2011


IV. EJECUCIÓN POR CONSOLA:

Antes que nada se debe de dar los permisos de ejecución a los archivos SHELLs respectivos en el directorio donde estén ubicados aplicando: chmod 777 *.sh

Luego ya podemos ejecutar:
$> crontab archivo.cron = (Establecerá el archivo.cron como el crontab del usuario).
$> crontab -e = (Abrirá el editor preestablecido donde se podrá crear o editar el archivo crontab).
$> crontab -l = (Listara el crontab actual del usuario, sus tareas de cron).
$> crontab -r = (Eliminara el crontab actual del usuario).


Para un mayor detalle de los comando utilizados, descargar el TUTORIAL pulsando Aquí

No hay comentarios:

Publicar un comentario