T e c s u p V i r t u @ ll
A u t o m a t i z a c t a c i ó n T a r e a s a r a s
Copyright © 2010 por TECSUP
Automatizacion de Tareas
Tecsup
Marzo 2010
INDICE 1. 2. 3.
4. 5.
6. 7.
Introducción ................................................................................ 3 Objetivos ..................................................................................... 3 Ntp ............................................................................................... 3 3.1. Descripción ..................................................................... 3 3.2. Servidores Ntp ................................................................. 4 3.3. Comando (ntpdate) .......................................................... 4 Clock ........................................................................................... 4 4.1. Comando (hwclock) ........................................................ 5 Automatización de tareas ............................................................ 6 5.1. Comando “at” .................................................................. 7 5.2. Comando (cron, crontab) .............................................. 10 Resumen .................................................................................... 13 BIBLIOGRAFIA....................................................................... 13
Página 2
Tecsup
Automatizacion de Tareas
Marzo 2010
“Automatización de Tareas ”
1. Introducción El tiempo es un factor de referencia que los Sistemas Operativos lo usan para asignarlos a sus procesos en sus operaciones a realizar donde se cronometra el tiempo de vida del proceso también en la asignación de información del tiempo a los archivos y directorios para saber información de cuando se genero, modifico. En este capítulo detallaremos cómo funciona el clock y herramientas de automatización de tares. 2. Objetivos Describir el funcionamiento del Clock Planificar ejecución de tareas en el tiempo. 3. Ntp Network Time Protocol (NTP) es un protocolo de Internet para sincronizar los relojes de los sistemas informáticos. NTP utiliza UDP como su capa de transporte, usando el puerto 123. Con NTP podemos usarlo de referencia para sincronizar los relojes de los Servidores y tener un tiempo igual. 3.1.
Descripción NTP utiliza el Algoritmo de Marzullo con la escala de tiempo UTC, incluyendo soporte para características como segundos intercalares. NTPv4 puede mantenerse sincronizado con una diferencia máxima de 10 milisegundos (1/100 segundos) a través de Internet, y puede llegar a acercarse hasta 200 microsegundos (1/5000 segundos) o más en redes de área local sobre condiciones ideales.
NTP es uno de los protocolos de internet más viejos que siguen en uso (desde antes de 1985). NTP fue diseñado originalmente por Dave Mills de la Universidad de Delaware, el cual lo sigue manteniendo, en conjunto con un equipo de voluntarios. El demonio NTP de Linux, es un proceso de nivel de usuario que se ejecuta continuamente en la máquina que soporta NTP, y la mayor parte del protocolo está implementado en este proceso de usuario. Para obtener el mejor rendimiento de NTP, es importante tener un reloj NTP estándar con lazo de seguimiento de fase implementado en el kernel del Sistema operativo, en vez de sólo usar la intervención de un demonio NTP externo:
Página 3
“El protocolo NTP es soportado por todos los Sistemas Operativos (Linux, Windows, Mac)”
Automatizacion de Tareas
Tecsup
Marzo 2010
todas las versiones actuales de GNU/Linux y Solaris soportan esta característica. 3.2.
Servidores Ntp Diferentes organizaciones ofrecen de manera libre sus Servidores NTP. Estos Servidores vía comunicación NTP entregaran la información del tiempo y que el Cliente al recibirla actualizare su reloj. Al usar comunicación UDP la transferencia de la información es rápida. http://www.pool.ntp.org
3.3.
Link: Información de Servidor de tiempo.
Comando (ntpdate) ntpdate es un comando que permite sincronizar la fecha y hora de nuestros sistemas con servidores de hora en Internet, para ciertas tareas es crítico que la hora del servidor sea la correcta, CASO
En Linux actualizar el Clock conectándose a un Servidor de Tiempo: # ntpdate –u
“Al iniciar el arranque un Sistema Operativo toma como referencia al Reloj de Hardware para actualizar su reloj de Software”
0.pool.ntp.org
4. Clock El reloj por software de un sistema Linux no siempre es preciso. Para mantener este reloj Linux utiliza una interrupción periódica generada por el hardware, llamada "timer interrupt". En caso de que existan muchos procesos siendo ejecutados (con respecto a los recursos disponibles) el sistema podría demorar un poco al momento de intentar servir la interrupción, por lo que el reloj de software puede estar ligeramente atrasado. El reloj por hardware trabaja independientemente del sistema operativo, así que usualmente es más preciso. Si re-inicia de manera frecuente la computadora (como es el caso para la mayoría de los sistemas que no son servidores) el reloj debe encontrarse prácticamente correcto. Si es necesario modificar el reloj de hardware, la manera más simple es reiniciar el sistema, ingresar a la pantalla de configuración de la BIOS y realizar el cambio de fecha y hora desde ahí. Esta manera evita todos los problemas que podrían suceder si se modifica el reloj desde el sistema. Si la modificación desde la configuración de la BIOS no se puede realizar, modifique el reloj utilizando date y clock (en ese orden).
Página 4
Automatizacion de Tareas
Tecsup
Marzo 2010
CASO
Visualizando la información de reloj por Software: # date
CASO
Visualizando la información de reloj por Hardware: # hwclock --show
4.1.
Comando (hwclock)
El comando hwclock permite la administración de los relojes de hardware de software: Sintaxis: # hwclock [parámetros]
Parámetro --show
--systohc --hctosys
Función Muestra la información del reloj de hardware Obtienen la fecha y hora desde el reloj de hardware y modifican el reloj de Software. Obtienen la fecha y hora desde el reloj de Software y modifican el reloj de hardware.
CASO
Comparando ambos relojes: # hwclock --show
Comparando
# date
Página 5
Automatizacion de Tareas
Tecsup
Marzo 2010
CASO
Actualizar el reloj de Sistema con el reloj de Hardware: # hwclock --hctosys
Actualizando
CASO
Actualizar el reloj de Hardware con el reloj de Sistema: # hwclock --systohc
Actualizando
EJERCICIO
Actualizar el reloj de Hardware con la información de la sincronización con un Servidor NTP: # ntpdate –u
0.pool.ntp.org
# hwclock --systohc
“Al sincronizarse con un Servidor de Tiempo, la sincronización
se realiza en el reloj de Sistema, luego con ayuda del comando (hwclock) se actualizara al reloj por Hardware”
“Toda tarea que incluya comandos, puede automatizarse”
5. Automatización de tareas En la administración se tiene que realizar diversas tareas en donde el administrador con el aprendizaje de los comandos lo realiza en la consola, al tener varias operaciones que realizar se va complicando porque tendrá que tomar un mayor tiempo en ejecutar los comandos lo cual generara una dependencia del administrador con las tareas a realizar. Al ser las tareas operaciones de comandos, mediante una evaluación se decidirá que tareas se pueden automatizar. Con la automatización conseguiremos planificar el tiempo a ejecutarse las tareas. Linux provee de servicios que se encargan de la automatización, usualmente existe 2 servicios: at cron “La diferencia radica en que el comando (at) realiza la ejecución de la
tarea en un solo tiempo determinado y el comando (cron) realiza tareas periódicas quiere decir que puede programarse para que se realice varias veces en tiempo distintos”
Página 6
Automatizacion de Tareas
Tecsup
Marzo 2010
5.1.
Comando “at”
Se utiliza el comando (at) para ejecutar un comando o comandos una sola vez en el tiempo. Sintaxis: # at [hora] [fecha] [incremento] < nombre_archivo
PARÁMETROS DEL COMANDO at HORA FECHA
Hrs (1,2 dígitos) Hrs:min (3,4 dígitos) Hrmin (3,4 dígitos) Now Noon Midnight Next
Mes día año Día de la semana Today Tomorrow
INCREMENTOS
+n mins +n hrs +n days +n weeks +n months +n years
Se utiliza la entrada estándar, pero también se puede utilizar un archivo para indicarle que comandos se desean ejecutar. Si no se especifica un archivo de entrada, el comando entrará en modo interactivo y deberá ingresar los comandos, luego de lo cual deberá presionar d para salir. EJERCICIO
Programar a las 13:11 reiniciar el Servidor: PROGRAMACION
# at 13:11
Página 7
Automatizacion de Tareas
Tecsup
Marzo 2010
La salida de los comandos, incluyendo los mensajes de error, es enviada al correo del usuario o puede ser re direccionados. Se puede determinar que usuarios pueden tener acceso al comando (at). El archivo (/usr/lib/cron/at.allow) específica quienes pueden usar el comando (at). Si este archivo no existe significa que todos pueden acceder al comando. El archivo (/usr/lib/cron/at.deny) lista que usuarios no tienen acceso al comando at. El archivo (at.deny) es solamente usado si no existe un archivo (at.allow). 5.1.1.
Especificación de la fecha
Utilice uno o dos dígitos para especificar la hora Por ejemplo: $ at 17
Ejecutará el comando a las 5:00 pm.
El comando at utiliza formato de 24 horas a menos que se especifique am. o pm. No se permiten espacios entre el valor numérico del tiempo y la cadena am o pm. Se permite una especificación de cuatros dígitos con: (dos puntos) entre la hora y el minuto. Por ejemplo: $ at 4:35pm También se permiten cadenas especiales now, noon y midnight.
Por ejemplo: $ at noon
Un trabajo puede ser ejecutado en un incremento de tiempo si se incluye el operador + sintáxis del tiempo. Por ejemplo: $ at now + 15 mins trabajo dentro de 15 minutos
Página 8
Ejecutará
el
Automatizacion de Tareas
Tecsup
Marzo 2010
Además de minutes (mins) , se permiten los especificadores de tiempo hours (hrs), days, weeks, months y years con el operador +. Por ejemplo: $ at 3:15pm + 6 months
Se puede especificar una fecha sintáxis de la hora, usando el formato “Mes día [año]”.
Por ejemplo: $ at 2:15pm Jul 16
Estas especificaciones de fecha parecen complejas, pero en realidad el formato es bastante natural e intuitivo, y la mayoría de los modos normales de escribir una fecha funcionarán como se espera. Si no, el comando at proporcionará un mensaje de error. 5.1.2.
Visualizando la cola de trabajo La opción –l permite listar todos los trabajo enviados con at sobre la base del numero de id, mostrando la fecha y hora en que están planificados. Esta opción es un alias del comando (atq). # at -l # atq
26 27 5.1.3.
2000-07-07 13:00 a 2000-07-06 18:00 a
Cancelando trabajos La opción –d se utiliza para retirar trabajos enviados con el comando at. Esta opción es un alias del comando atrm. # at –d # atrm
Por ejemplo: $ at -d 24
Página 9
Automatizacion de Tareas
Tecsup
Marzo 2010
Solo se puede retirar los trabajos que el usuario haya creado. Únicamente el superusuario puede retirar cualquier trabajo de la cola. Los trabajos creados con at se almacenan en el directorio /usr/spool/cron/atjobs hasta que se ejecuten. 5.2.
Comando (cron, crontab)
El comando (cron) es el nombre de un servicio del sistema que se ejecuta al comienzo de la secuencia de arranque de todos los sistemas Linux. Se despierta una vez cada minuto, examina un archivo de control para ver si hay algún trabajo que ejecutar en ese minuto y luego lo ejecuta. Si no hay trabajos programados para ese momento, (cron) vuelve a dormir hasta el siguiente minuto. Este potente mecanismo de planificación depende de la naturaleza multitarea del sistema Linux. Afortunadamente, Aunque siempre presente, (cron) no utiliza muchos recursos del sistema. Además del uso global de sistema de las funciones (cron), algunos mecanismos permiten a los usuarios individuales (además del superusuario) programar trabajos para su ejecución regular a intervalos de un minuto o más. Mientras (at) planifica un trabajo para ejecutarlos una sola vez, la facilidad cron planifica trabajos para ejecutarlos regularmente a intervalos específicos.
“El (crontab) recibe comandos o archivos de scripts para que se ejecuten en un tiempo a definir”
Con (crontab) podría programarse para realizar las siguientes tareas: Limpiar el directorio /tmp. Remover archivos de mensajes y archivos en desuso es una tarea regular. Verificar el espacio en disco e enviar un mensaje de advertencia. Generar reportes del estado del sistema o ejecutar trabajos de gran carga en momentos de menos carga para el sistema. El comando (crontab) somete los trabajos para que el demonio cron los ejecute. Sintaxis: # crontab [.cronfile]
El archivo .cronfile contiene los comandos que serán ejecutados. Página 10
Automatizacion de Tareas
Tecsup
Marzo 2010
Se puede determinar que usuarios pueden tener acceso al comando (crontab). El archivo /usr/lib/cron/cron.allow específica quienes pueden usar el comando (crontab). Si este archivo no existe significa que todos pueden acceder al comando. El archivo /usr/lib/cron/crontab.deny lista que usuarios no tienen acceso al comando (crontab). El archivo crontab.deny es solamente usado si no existe un archivo crontab.allow. 5.2.1.
Archivo .cronfile Para ejecutar el comando (crontab) se debe especificar cuál es el archivo que contiene las tareas a ejecutar.
El archivo puede tener cualquier nombre. Pero es una buena idea llamarlo .cronfile. Hay dos beneficios de llamarlo así: Está oculto a la visualización normal. El nombre hace obvio cual es su función. Cada línea del archivo .cronfile especifica una tarea que será realizada. Cada usuario puede someter un archivo .cronfile, pero un archivo .cronfile puede contener varias tareas. Una tarea puede ser un simple comando o un shell script conteniendo varios comandos. La salida de un comando es enviada al correo del usuario a menos que sea re direccionada a un archivo o un terminal. Especifique rutas completas para los comandos y archivos que van a ser utilizados. El archivo .cronfile puede ser creado con el editor vi u otro editor cualquiera. 5.2.2.
Estructura de la programación El archivo .cronfile debe contener seis campos para cada tarea. Cada campo debe estar separado de los demás por espacios en blanco o tabs:
Página 11
Automatizacion de Tareas
Tecsup
Marzo 2010
“DIA DE MES (1-31)”
“HORA (0- 23)”
“El símbolo (*) representa todos los valores del campo. En este caso todos los días del Mes (1-31)”
“Día de la SEMANA (0 -6)” 0=Domingo 1=Lunes
“MES (1-12)” “MINUTO (0 -59)” “Representa el minuto de la hora. En el ejemplo figura 3 esto indica que se realizara al minuto 3 de la hora indicada. No indica que se realizar cada 3 minutos
“ACCION” “SCRIPT a programarse. Debe de indicarse la ruta completa”
Los cinco primeros campos dan la fecha y hora de ejecución, y el último indica la tarea a realizar. Un número en un campo contiene un valor o valores que da la fecha u hora de ejecución de la tarea, y las entradas que contienen asterisco (*) son
“En el (cron) se puede ingresar varias tareas en diferentes tiempos, cada línea es una programación de tarea”
interpretadas como “todos” por el cron.
Cada
campo puede tener un valor simple, un rango de valores separados por un guión, o una lista de valores separados por comas El primer campo especifica el minuto de la hora en que se ejecuta la tarea: 00 significa a la hora en punto, 30 significa 30 minutos sintaxis de la hora, y así sucesivamente. El segundo campo especifica la hora del día en formato de 24 horas; 2 es 2:00 am., 14 es 2:00 pm. El tercer campo especifica el día del mes, de 1 a 31. El cuarto campo da el mes del año, de 1 a 12. El quinto campo da el día de la semana, desde 0 para el domingo hasta el 6 para el sábado. Una vez creado el archivo .cronfile utilice el comando (crontab) para someter el archivo: # crontab .cronfile
Página 12
Automatizacion de Tareas
Tecsup
Marzo 2010
También existe otra forma de ingresar la programación. Con la opción –e del (crontab) se apertura un archivo para el ingreso de la tarea evitando generar un archivo (.cronfile): # crontab -e
5.2.3.
Visualizando tareas Para visualizar las tareas utilice la opción –l # crontab -l
5.2.1.
Eliminar tareas Para eliminar las tareas utilice la opción –r # crontab -r
“Evalué los procesos que realiza y ponga a prueba el uso del (at) o (crontab) ”
6. Resumen El protocolo NTP permite sincronizar tiempo en los Sistemas Operativos Existe 2 tipos de Clock el de hardware y software. Comúnmente el Sistema Operativo trabaja con su reloj de Software. En el tiempo al no tener una alta precisión se desfasa los relojes de hardware y software. El comando (hwclock) gestiona el reloj de hardware y software. Para la programación de tareas existe 2 utilitarios (at) (crontab) El (at) se programa tareas fijas a realizarse una vez. El (crontab) se programa tareas periódicas.
7. BIBLIOGRAFIA Libro de Administración de Linux http://www.redhat.com/docs/manuals/linux/ GD
Página 13