Programando tareas para ejecución automática Carole Williams, carole@redhat.com Puede configurar procesos para que se ejecuten repetidas veces, a ciertas horas, sin necesidad de intervención humana. Ejemplos deeste tipo de procesos pueden ser analizadores de archivos log, trabajo en rede o herramientas visuales de seguridad, trabajos de mantenimiento de sistemas de archivo y otros. Para ahorrarse de tener que ejecutar estas tareas manualmente, el daemon cron puede ajustarse para que eje­ cute este tipo de procesos en los momentos que especifique. Cada pro­ ceso se ejecutará como si lo hiciera el usuario asociado con la tarea. ______________________________________________________________________ Table of Contents 1. (Des)activando la entrada 2. Ajustando un comando para ser repetido 3. Establecer cuándo debe ejecutarse un comando 4. Ejemplos ______________________________________________________________________ 11.. ((DDeess))aaccttiivvaannddoo llaa eennttrraaddaa Por definición, toda entrada nueva está activa. Desmaruqe Ësta entrada está activa" si quiere suspender la ejecución de un proceso. También podría eliminar la tarea, pero si va a ejecutarla después, es mejor usar la táctica anterior. 22.. AAjjuussttaannddoo uunn ccoommaannddoo ppaarraa sseerr rreeppeettiiddoo Cualquier comando válido puede ser escrito en la caja de comandos. Puede querer incluir la ruta completa del comando para aegurarse de que se encontrará. Si el comando es muy largo y complejo, también puede crear un shell script para ejecutar el comando y entonces teclee la instrucción para ejecutarlo en la caja de comandos, como el siguiente ejemplo: sh nombre_ de_su_script 33.. EEssttaabblleecceerr ccuuáánnddoo ddeebbee eejjeeccuuttaarrssee uunn ccoommaannddoo Debe especificar exactamente cuando quiere ejecutar el mencionado comando. El daemon cron se "despierta" cada minuto y comprueba si existe algún proceso programado. El proceso sólo funcionará cuando todos los campos sean verdad (excepto los días del mes y los días de la semana). Los días del mes y de la semana especifican la fecha para procesar una tarea. Si ninguno de los dos campos son *, entonces los procesos se ejecutarán si cualquiera de los dos campos son verdaderos. Si alguno de los campos es *, entonces el proceso se ejecutará siempre que el otro sea verdadero. Si amobos campos son *, se ejecutará el proceso a diario. Si necesita adelantar la hora del sistema (por ejemplo, durante el día para ahorrar energía), todos los trabajos programados que debía ser ejecutados en ese intervalo corrido, no se ejecutarán, por el contrario, si se atrasa la hora puede que un proceso se ejecute dos veces. Si está añadiendo un proceso recurrente a un servidor que ya de por sí está muy cargado, debe tener en cuenta para cuando están programados los restantes procesos, por lo que para tareas grandes, deberá elegir una franja horaria en la que el servidor esté más liberado. Para la mayoría de sistemas esta franja corresponde a la noche, pero depende de cada caso. Un asterisco (*) indica que el proceso debería ser ejecutado cada periodo de tiempo (por ejemplo, un * en el campo "meses" indica periodicidad mensual). Un guión (-) indica que la tarea debería ser ejecutada durante un cierto rango temporal, incluyendo el fin. Por ejemplo, 2-5 en el campo "Mes"indica que el trabajo se ejecutará de Febrero a Mayo. Se usarán comas (,) para separar entradas específicas para un periodo de tiempo. Por ejemplo, 5,6,11 en el campo mes, indica que el trabajo se procesará en Mayo, Junio y Noviemvre. Las comas también separan rangos de números (por ej.: 1-3,6-9 en el campo mes significaría de Enero a Marzo y de Junio a Septiembre). Un rango de valores, o un *, seguido de una barra y un número se usa para indicar el paso en dicho rango. De manera que 2-10/2 significa un mes sí y otro no desde Febrero a Octubre (en otras palabras: Febrero, Abril, Junio, Agosto y Octubre). Un símbolo */5 en el campo de día ejecutará la tarea cada cinco días en un mes determinado. MMeesseess Enero es el 1, Febrero el 2,...,Diciembre el 12. También se puede uasr las tres primeras letras del mes: jan,feb,...,dec. Ejemplos: 1-6 es cada mes desde Enero a Junio, ambos inclusive. 1,6,12 significa, Enero, Junio y Diciembre. 1-12/3 o */3 significan cada tres meses empezando desde Enero (en otras palabras, Enero, Abril, Julio y Octubre). 1-12 o * significa todos los meses. DDííaass ddeell MMeess Los días del mes van del 1 al 31 (recuerde que algunos meses pueden no tener el 29,30 o 31. Por lo que si programa una tarea para el día 31 de cada mes, sólo se ejecutará en aquellos que tengan 31 días. Ejemplos: 1,15,28 significa el día 1, el 15 y el 28 de cada mes. Un 2-10 significa del día 2 hasta el 10 de un mes, ambos inclusive. 1-31 o * significa cada día del mes. Si los días de la semana también tiene un *, el proceso se ejecutará todos los días. Si dicha expresión está en el campo de días del mes, y un valor restringido (algo aparte de *) está en el campo días de la semana, el trabajo se procesará cuando el campo de días de la semana sea cierto. DDííaass ddee llaa sseemmaannaa El domingo es el día 0, lunes el 1,... También puede usar las tres primeras letras: sun. mon. tue, wed, thu, fri,sat. Por ejemplo: 2,4,6 significa Martes, Miércoles y Sábado. 0-6 o * significa todos los días de la semana. Si elcampo de días del mes también está con *, se ejecutará la tarea cada día. El caso anterior con un valor restringido (algo aparte de *) en el campo días del mes funcionará sólo cuando éste último sea cierto. HHoorraass Las horas del día van de 0 (medianoche) hasta las 23 (11p.m.). Ejemplos: 0,1,2 significa 0000 (medianoche), 0100 (1 a.m.) y 0200 (2 a.m.) horas. 0-23/2 y */2 significa 0000, 0200, 0400...2200. MMiinnuuttooss Los minutos de una hora van de 0 a 59. Ejemplos: 0,30 siginifica a las medias y las horas en punto. 0-59/5 y */5 significa cada 5 minutos durante una hora, empezando a la hora en punto (así a la hora en punto, pasados 5 minutost, pasados 10 minutos...). 44.. EEjjeemmppllooss Meses * Días del mes * Días de la semana * Horas 0 Minutos 5 Esta configuración ejecutará un proceso cada día, a las 00:05T. Meses * Días del mes * Días de la semana 0,3,6 Horas 2 Minutos 10 Esta configuración ejecutará un proceso cada Domingo, Miércoles, y Sábado a las 2:10. Meses * Días del mes 1,15,31 Días de la semana 2 Horas 1 Minutos 10 Esta configuración ejecutará un proceso durante cada mes, el día 1,15 y 31, cada Martes a la 1:10. Obviamente, probablemente no necesitará programar una tarea como este, pero el ejemplo ilustra cómo los días del mes y los de la semana se combinan si ningún campo contiene *.