TEMA 3. Administración Básica del Sistema. |
3.2 ejecuciÓn periÓdica de comandos. Algunas veces surge la necesidad de ejecutar un programa de manera regular a intervalos periódicos, o que puedan ejecutarse en determinados momentos sin tener que estar delante del ordenador (por ejemplo, para realizar copias de seguridad a altas horas de la noche, cuando nadie esté usándolo). Afortunadamente Linux proporciona las herramientas necesarias para llevar a cabo estos dos tipos de tareas: at y cron, asociados a dos demonios; atd y crond respectivamente, que deben estar en funcionamiento para que esto sea posible. No es necesario reiniciar estos servicios tras realizar algún cambio porque ellos mismos comprueban periódicamente si tienen tareas a realizar. at Este comando permite utilizar la línea de comandos para configurar un evento individual. Tanto el administrador del sistema como los usuarios tienen acceso a esta herramienta. El comando “at” dispone de una jerarquía de colas; cada una de estas colas se refiere a una prioridad o la cantidad de tiempo de procesamiento de la máquina que se le permite ocupar a ese trabajo. Los niveles están nombrados con una único carácter, que puede ir desde la “a” hasta la “z”, o desde la “A” a la “Z”. Cuanto más avanzada sea la letra en minúscula desde el principio del abecedario, menos tiempo se le permite ocupar. Si se utilizan las mayúsculas ocurre lo mismo, pero sólo se ejecutarán si la media de la carga de la CPU es inferior a 0.8 (al 80%). Para configurar quién puede hacer uso de “at” se utilizan dos archivos; at.allow y at.deny; el funcionamiento es el siguiente: si existe at.allow, sólo los usuarios cuyos nombres se encuentren en él podrán utilizar el comando (el superusuario siempre podrá usarlo); si no existe, se comprueba at.deny, que designa los usuarios que no pueden utilizar “at”. Los nombres de usuario deben aparecer cada uno en una línea. Para utilizar at la sintaxis es: at opciones fecha. Algunas de las opciones disponibles son: -c envía los comandos a la salida estándar. -f coge la entrada del archivo especificado. -m envía correo electrónico al usuario original cuando el trabajo se ha completado. -q asigna una cola específica; la cola “=” se refiere a los trabajos que se están ejecutando en ese momento. -V proporciona el número de versión de at. Existen muchas formas de decirle a at cuándo queremos que ejecute un comando; las más usadas sin embargo son: hh:mm hora y minuto mmddyy mes, día y año; pueden ir separados por “/” o por “.” Ambas pueden combinarse para especificar una fecha completa. Por ejemplo para crear un trabajo con prioridad “c” a las 15:30 del 15 de Agosto de 2004 debería ponerse: at -q c 15:30 08/15/2004 Existe otra opción muy util, “now + X unidades”, que cuenta a partir de ahora X unidades (minutes, hours, days). Para ejecutar el comando dentro de 5 minutos: at now + 5 minutes Una vez puestas las opciones entraríamos en la línea de comando propia de at; todo lo que se escriba ahora y hasta que se pulse “Control-D” se considera parte del trabajo. Hay que tener en cuenta que sólo hay que poner comandos de consola, ya que las órdenes se ejecutarán con el intérprete de comandos /bin/sh. Para ver los trabajos que están en la cola se utiliza atq; en primer lugar aparece el número de trabajo, seguido de la fecha y hora de ejecución, el nombre de la cola y el usuario a quien pertenece el trabajo. Si se quiere eliminar un trabajo antes de que se lance, hay que utilizar atrm número_de_trabajo, donde éste número es el que muestra atq. cron Se utiliza para gestionar comandos que se ejecutan más de una vez; es una herramienta más completa que at y la forma de utilizarlo depende del usuario que lo haga. Veremos primeramente cómo lo usa root. El archivo principal de cron es /etc/crontab; en él se define cuándo se ejecutan las tareas, teniendo en cuenta que se pueden configurar cada hora (hourly), día (daily), semana (weekly) o mes (monthly). Cada una de ellas posee un directorio propio denominado cron.periodo, siendo periodo uno de los anteriores. En estos directorios se encuentran los scripts que serán ejecutados. El comando cron tiene una forma particular de representar el tiempo, distinta de la de at. Una sentencia de tiempo cron se divide en 5 partes: A H D M W; cada uno de estos elementos se representan numéricamente. Su significado es: A Especifica el número de minutos después de la hora; puede valer de 0 a 59. H Especifica la hora, en formato de 24 horas; vale de 0 a 23. D Especifica la fecha (día del mes); vale de 0 a 31. M Especifica el mes del año; vale de 1 a 12 o las 3 primeras letras del nombre del mes. W Especifica el día de la semana; vale de 0 (domingo) a 6 (sábado) o las tres primeras letras del nombre del día. También se pueden utilizar unos modificadores; existen diferentes operadores que puede utilizar para expresar rangos y otros elementos que le permiten expresar valores de tiempo múltiples para su trabajo de cron: * expresa que todos los valores son posibles - especifica un rango de valores (incluyendo a los que aparecen , valores individuales / especifica el incremento que debería seguir un grupo de valores en lugar de aumentar en uno Puedes definir tu propia periodicidad, para lo que deberás crear un directorio, aunque realmente no es necesario ya que las 4 entradas que hay en crontab cubren prácticamente todas las necesidades. Para crear un trabajo de cron como usuario (incluido el superusuario cuando el trabajo no es para el sistema), hay que ejecutar el comando: crontab -e Así abriremos el archivo de datos crontab para el usuario (si es la primera vez estará vacío); el formato de éste archivo es similar al que vimos anteriormente, salvo que no hay que especificar el nombre de usuario (ya que cada usuario posee el suyo propio). Si hubo algún error o apareció alguna información al ejecutar un comando, tanto con at como con cron, puede consultarse revisando el correo del usuario. |
Copyright - © ANFORA, 2004. Todos los derechos reservados. Condiciones Legales.