You are on page 1of 12

LINUX.

AUTOMATIZACIN DE TAREAS (at, batch, cron) (anacron)


INTRODUCCIN
Como administrador de sistemas, no es probable que a uno le guste tener que reinventar la rueda continuamente. La labor de administrador ya implica suficiente trabajo como para perder el tiempo en tareas repetitivas que pueden automatizarse fcilmente. Los scripts de shell resultan muy convenientes para agrupar en un archivo una serie de comandos (que normalmente se escribiran en la lnea de comandos) para resolver tareas de una sola vez. Todos esos comandos que se incluyen en el archivo se comportan como si fueran un nico comando; lo nico que hay que hacer es escribir el nombre del archivo y todos los comandos en l contenidos sern ejecutados. Los scripts de shell permiten transformar muchas tareas tediosas en comandos de una nica lnea. Qu pasara si pudiramos ir un paso ms all y no tener ni siquiera que escribir el nombre de los scripts de shell? Pues bien, Linux dispone de dos comandos de automatizacin de tareas para hacer, precisamente, que se ejecuten las tareas en un momento determinado. Ni siquiera hace falta tener una sesin iniciada en el sistema para que las tareas se ejecuten, aunque, por supuesto, el sistema deber estar encendido para que los dos comandos puedan llevar a cabo su trabajo. Estos dos comandos son at (que incluye al comando batch) y cron. El comando at se emplea para planificar la ejecucin de tareas una nica vez en el momento especificado y funciona basndose en el concepto de cola de trabajos (batch se emplea para planificar la ejecucin de tareas una nica vez cuando la carga del sistema lo permita). El comando cron se emplea para planificar tareas que se tengan que ejecutar ms de una vez en intervalos predefinidos. Tanto el comando at como el comando cron son demonios (comandos que se ejecutan en segundo plano que se encuentran continuamente a la espera hasta que son necesarios) que son arrancados por los archivos de inicializacin durante el inicio del sistema. Si se examinan todos los procesos que se estn ejecutando en el sistema en un instante determinado (ps aux), pueden observarse los procesos con identificador de proceso PID 1888, que es el proceso correspondiente al comando (demonio) at (/usr/sbin/atd), y PID 328, que es el comando (demonio) cron (crond). $ ps aux USER ... root daemon ... PID %CPU %MEM 0.0 0.1 VSZ 1348 1336 RSS 148 188 TTY ? ? STAT S S START 19:23 19:23 TIME 0:00 0:00 COMMAND crond [atd]

1799 0.0 1888 0.0

Cmo se conoce el resultado de la ejecucin de las tareas automatizadas? Por un lado, la salida normal y la salida de error de los comandos que forman la tarea se envan al buzn de correo electrnico del usuario del usuario que ejecuta la tarea (en /var/spool/mail/nombre-usuario), a no ser que se redirijan. As, si un comando de la tarea aparece como who, el resultado normal y el resultado de error 2se envan al buzn de correo del usuario; si aparece como who > /dev/tty2, el resultado normal se enva a la consola n 2; si aparece como who 2> /dev/null, el resultado de error se elimina; y si aparece como who &> $HOME/fich-conectados, los resultados normal y de error se guardan en el fichero indicado. Por otro lado, una vez realizada la tarea, tambin se enva mensaje de comunicacin al buzn de correo del usuario. Qu tipos de tareas resulta til automatizar? Por un lado, de manera predeterminada, Linux ya incluye una serie de tareas predefinidas (configuradas en los lugares usuales donde se mantienen los archivos cron), que se hacen cargo de diversas tareas de limpieza, que el comando cron ejecuta de manera regular, Por otro lado, y teniendo en cuenta que no todos los trabajos se prestan a ser automatizados, existen muchas tareas que pueden y deberan automatizarse; de hecho, cualquier tarea que tiene que realizarse de manera peridica, debera ser automatizarla para que su trabajo sea ms cmodo. Algunas de las tareas que pueden automatizarse fcilmente son: Limpieza de registros y archivos temporales. Tanto el rea de archivos temporales como los archivos de registro pueden llegar a llenarse de informacin intil, malgastando un valioso espacio de disco. Podemos escribir un script que limpie dichos archivos y luego que hacer que cron ejecute dicho script de manera peridica. Realizacin de copias de seguridad. La realizacin de copias de seguridad de los archivos es el trabajo ms importante del sistema. Dichas copias deben hacerse de manera peridica y cron es la herramienta que permite automatizar esta tarea. Se recomienda realizar las copias de seguridad cuando la carga del sistema sea baja, y un buen momento para hacerlo es a primeras horas de la madrugada. Eliminacin de archivos core. Con el use regular del sistema, tienden a acumularse archivos core, especialmente si el sistema tiene varios desarrolladores. Es una simple cuestin de establecer una tarea cron que elimine peridicamente todos los archivos core del sistema de archivos. Recuperacin de correo electrnico desde un servidor remoto. Puede programarse cron para que extraiga el correo electrnico desde un servidor de correo, utilizando el comando fetchmail cada pocos minutos. t-16-linux-tareas-automatizacion-tareas-2002-2005.doc / 1-12

Aunque el concepto de automatizacin de tareas puede parecer un poco intimidatorio, puede hacerse en cuestin de minutos. Las tareas ms complejas pueden requerir algo ms de tiempo, por supuesto, pero si ya dispone de un script de shell que desea automatizar, lo nico necesario para automatizarlo es aadir la lnea del script de shell a un archivo de texto. Despus de leer este documento, debera poder comprenderse por qu es importante la automatizacin de trabajos y bajo qu circunstancias debera emplearse.

UTILIZACIN DE at y batch
at se emplea para una tarea que se quiere realizar en un momento determinado (por ejemplo, en el da actual, al da siguiente, un da determinado,...), como por ejemplo, una copia de seguridad no planificada. Cada vez que se tenga una tarea que haya que realizar en un plazo de unas pocas horas y no vayamos a estar delante de nuestro equipo en dicho momento, puede insertarse la tarea en una cola utilizando at. Con esto, la tarea se ejecutar automticamente, incluso aunque no tengamos una sesin iniciada en el ordenador. El principal concepto en el que se basa at es el de colas de tareas: se colocan tareas en una cola especfica y cada tarea de la cola se ejecuta en el momento especificado. Existen varias colas diferentes que pueden usarse con at, y las diferentes colas pueden tener diferentes prioridades de planificacin. batch es muy similar a at, pero slo ejecuta tareas cuando la carga del sistema lo permita, es decir, cuando es inferior un n especificado [que, por defecto, es 0,8, pero puede especificarse un valor diferente mediante el demonio atd (ver ms adelante)]. Por ejemplo, podra especificarse un nmero diferente, porque el sistema est bastante ocupado y pueda no alcanzar el nivel predeterminado de carga, o porque las tareas que haya que ejecutar por lotes puedan requerir una cantidad considerable de recursos del sistema y no se quiera cargar ms el sistema a menos que haya suficientes recursos disponibles. Esta seccin examina los siguientes temas: Sintaxis de at. Sintaxis de batch. Ejemplos de utilizacin de at y batch. El demonio atd. Especificacin de los usuarios que pueden usar at.

SINTAXIS DE at Hay varias sintaxis que pueden emplearse para invocar a at segn lo que se quiera realizar: Sintaxis para agregar nuevas tareas a la cola: at [-q letra-cola] [-m] [-v] [-f archivo] tiempo -q letra-cola Especificar qu cola hay que usar. La cola se indica mediante una nica letra, que puede ir de a a z, o de A a Z. La cola predeterminada para at es la a, y esta es la cola que se utiliza cuando no se especifica ninguna otra. Cuanto mayor sea la letra utilizada para la cola, mayor ser la "amabilidad" empleada con dicha tarea. En este contexto, la "amabilidad" de una tarea determina la prioridad de planificacin de la misma: una tarea con una mayor amabilidad tendr una prioridad de planificacin ms alta. Existe tambin una cola especial denominada =. Esta cola contiene todas las tareas que se estn actualmente ejecutando. -m. -v -f archivo Indicar a at que enve un mensaje de correo electrnico al usuario cuando la tarea especificada haya sido completada. (Por defecto). Mostrar en pantalla, en la primera lnea, la hora/fecha en que se ejecutar la tarea. Leer los comandos de la tarea desde el archivo especificado, en lugar de desde la entrada estndar. Las tareas (comandos) que se pasan a at pueden encontrarse en un archivo o ser pasados a travs del teclado. Si no se proporciona la opcin f archivo, at leer los comandos desde el teclado y situar el cursor al comienzo de la siguiente lnea en blanco y mostrar un indicador similar a "at>". A continuacin, podemos proceder a escribir los comandos que queramos ejecutar despus del indicativo, pulsando la tecla Intro al final de cada comando. Una vez terminemos de escribir los comandos, hay que poner un carcter de fin de archivo en una lnea en blanco para informar a at de que hemos terminado. La combinacin de teclas Ctrl+D genera un carcter de fin de archivo (EOF). Indicar la fecha/hora cuando hay que ejecutar la tarea. Si se especifica un tiempoa hora que ya haya transcurrido, la tarea ser ejecutada al dic siguiente. El tiempo se puede indicar de muchas maneras diferentes, indicando slo la hora, la hora y la fecha, palabras reservadas o incrementos: hh:mm o hhmm. De manera predeterminada, formato de 24 horas (por ejemplo, las 15:30: 15:30 o 1530). Puede agregarse al formato la indicacin am o pm si se prefiere trabajar con el formato de tiempo de 12 horas (por ejemplo, las 15:30: 3:30pm o 0330pm). Existen tres palabras reservadas que se pueden t-16-linux-tareas-automatizacion-tareas-2002-2005.doc / 2-12

tiempo

usar para representar horas especficas del da: midnight (medianoche), noon (medioda) y teatime (4pm o 16:00). Existen dos palabras reservadas para indicar si la tarea debe ejecutarse hoy o maana: today (hoy) y tomorrow (maana). dd.mm.[aa]aa, mm/dd/[aa]aa, [aa]aa-mm-dd. Hay que colocar la especificacin de fecha despus de la especificacin de hora (por ejemplo, las 15:30 del 15 de junio de 2003: 15:30 15.06.03, o bien 15:30 06/15/03, o .bien 15:30 2003-15-06). Otro formato es nombre-mes n-da [ao], con el nombre del mes completo o las tres primeras letras en ingls (por ejemplo, el 15 de junio: june 15 o jun 15). Otro formato es nombre-da, que corresponde a un da de la semana actual, con el nombre del da completo o las tres primeras letras en ingls (por ejemplo, el lunes: monday o mon). now + n unidad-tiempo. Para usar tiempos relativos al momento actual. Las unidades de tiempo pueden ser: minutes (minutos), hours (horas), days (das) y weeks (semanas) (por ejemplo, maana, 5 horas despus del momento actual: now + 5 hours tomorrow) (por ejemplo, dentro de 5 minutos: now + 5 minutes). Sintaxis para listar tareas (at l o atq): at l [-q letra-cola] o atq [-q letra-cola] -l. Alias de atq. Si lo ejecuta un usuario lista las tareas pendientes del usuario; si lo ejecuta root lista todos las tareas de todos los usuarios. El listado tiene la forma: n trabajo, fecha y hora, cola y usuario.

Sintaxis para borrar tareas (at d o atrm): at -d n-tarea ... o atrm n-tarea ... -d. n-tarea. Alias de atrm. Borra las tareas identificadas por su n de tarea. N de identificacin de las tareas.

Sintaxis para mostrar los comandos que forman las tareas: at -c n-tarea ... -c. Mostrar en la pantalla los comandos que se van a ejecutar para las tareas identificadas por su n de tarea. Para cada tarea, se muestra el script completo que hay que ejecutar para la tarea.

SINTAXIS DE batch La sintaxis de batch es similar a la de at, con el mismo significado de las opciones y con el argumento tiempo opcional: batch [-q letra-cola] [-m] [-v] [-f archivo] [tiempo] (En vez de batch se puede usar at b, que es un alias de batch). EJEMPLOS DE UTILIZACIN DE at y batch Ejemplo 1: El primer ejemplo planifica una tarea para que se ejecute a las 7 de la maana, dentro de una semana. ste sera el comando usado para planificar la tarea: $ at 7am + 1 week warning: commands will be executed using (in order) a)$SHELL b)login shell c)/bin/sh at> echo Hola mundo at> Control-D <EOT> job 1 at 2003-06-12 07:00 En pantalla se muestra el nmero de tarea (job 1) y cundo ser ejecutada (2003-06-12 07:00). Para mostrar los comandos que se van a ejecutar al ejecutar la tarea anterior: $ at -c 2 lo que mostrar una salida parecida a : #!/bin/sh # atrun uid=500 gid=500 # mail virgilio 0 umask 2 PWD=/home/virgilio; export PWD USERNAME=; export USERNAME HISTSIZE=1000; export HISTSIZE HOSTNAME=mercurio.linux.org; export HOSTNAME t-16-linux-tareas-automatizacion-tareas-2002-2005.doc / 3-12

LOGNAME=virgilio; export LOGNAME HISTFILESIZE=1000; export HISTFILESIZE MAIL=/var/spool/mail/virgilio; export MAIL HOSTTYPE=386; export HOSTTYPE PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/virgilio/bin; export PATH HOME=/home/virgilio; export HOME INPUTRC=/etc/inputrc; export INPUTRC PS1=[\\u@\\h\ \\W]\\\$\ ; export PS1 USER=dbarber; export USER BASH-ENV=/home/virgilio/.bashrc; export BASH_ENV OSTYPE=Linux; export OSTYPE SHLVL=1;export SHLVL cd /var/log || { echo 'Execution directory inaccessible' >&2 exit 1 } echo Hola mundo Ejemplo 2: Introduzcamos ahora otra tarea, planificada para ejecutarse dentro de 2 horas: $ at now + 2 hours warning: commands will be executed using (in order) a)$SHELL b)login shell c)/bin/sh at> echo Adios mundo at> Control-D <EOT> job 2 at 2003-06-05 21:10 Esta tarea recibe el nmero de tarea 2 y se ejecutar a las 21:10 del 05 de junio de 2003. Ejemplo 3: Utilicemos ahora una especificacin de tiempo distinta y una cola diferente. La siguiente tarea ser planificada para ejecutarse el 3 de septiembre de 2003 a las 2 de la tarde. El comando es como sigue: $ at -q b 14:00 09/03/2003 warning: commands will be executed using (in order) a)$SHELL b)login shell c)/bin/sh at> echo "Buscando archivos core" at> find / -name core print at> Control-D <EOT> job 3 at 2003-09-03 14:00 Esta vez, hemos usado un comando de dos lneas para buscar todos los archivos core del sistema de archivos. Obsrvese cmo se ha especificado que haba que usar la cola b. La tarea ha recibido como identificador el nmero 3. Ejemplo 4: Intentemos ahora otra especificacin de tiempo, maana, a las 5 de la tarde. Adems, en lugar de escribir los comandos a travs de la entrada estndar, vamos a emplear un archivo que contenga una serie de comandos. El comando de ejecucin de at sera el siguiente: $ at -f miscomandos 5pm tomorrow warning: commands will be executed using (in order) a)$SHELL b)login shell c)/bin/sh job 4 at 2003-09-06 17:00 Ejemplo 5: Para mostrar todas las tareas programadas: $ at -l 1 2 3 4 2003-06-12 2003-06-05 2003-09-03 2003-06-06 07:00 21:10 14:00 17:00 a a b a virgilio virgilio virgilio virgilio

Como puede ver, hay cuatro trabajos en cola actualmente para su ejecucin. El listado muestra el instante en que sern ejecutados, as como la cola en la que estn almacenados. Ejemplo 6: Para mostrar todas las tareas programadas de la cola b: t-16-linux-tareas-automatizacion-tareas-2002-2005.doc / 4-12

$ at l q b 3 2003-09-03 14:00 b virgilio

Ejemplo 5: Para borrar la tarea n 2 se usan los formatos: $ at d $ atrm 2 Si no se muestra ninguna salida significa que la orden se ejecut bien. Ejemplos de batch: Los ejemplos de utilizacin de batch, pueden ser los mismos que los de at anteriormente presentados, porque ambos comandos admiten las mismas opciones. Todos los ejemplos que funcionan con at deberan funcionar con batch, pero con batch no es necesario especificar un instante de tiempo. Si no se especifica ningn instante, los comandos se ejecutarn cuando la carga del sistema se encuentre por debajo de la cantidad especificada. EL DEMONIO atd atd (/usr/sbin/atd) es el demonio (programa que se ejecuta en 2 plano y permanece en ejecucin a la espera de que se necesite su servicio) que controla la ejecucin de las tareas programadas por los comandos at/batch. Se ejecuta al arrancar el sistema en los niveles de arranque 3, 4 y 5 mediante el enlace simblico /etc/rc.d/rcn.d/S40atd (donde n=3,4 o 5) al script /etc/rc.d/init.d/atd. Tambin puede ejecutarse directamente atd para cambiar diversos parmetros del comportamiento de atd. La sintaxis para el demonio atd es: atd [-l n-promedio-carga] [-b intervalo-batch] [-s] [-d] La argumentos que pueden pasarse a atd, son los siguientes (el ms interesante es el l): -l n Permite especificar el factor mximo de carga por debajo del cual pueden ejecutarse los trabajos puestos en cola por el comando batch. Como hemos mencionado anteriormente, el valor predeterminado para esta opcin es de 0,8. La carga actual del sistema est determinada por el archivo /proc/loadavg, por lo que hace falta que est en funcionamiento un sistema de archivos /proc para poder hacer use de esta funcin. -b -s Permite especificar el intervalo mnimo de tiempo (en segundos) que tiene que transcurrir entre la ejecucin de dos tareas de batch. El intervalo de tiempo predeterminado es de 60 segundos. Indica al demonio atd que procese la cola at/batch una nica vez, ejecutando slo la siguiente tarea de la cola. Esta funcin slo se usa generalmente por parte del script atrun y no resulta particularmente til. Al igual que atrun, el parmetro -s se proporciona fundamentalmente por cuestiones de compatibilidad hacia atrs. Activa la funcin de depuracin verbosa, que hace que se impriman todos los mensajes de error a travs de la salida de error estndar, en lugar de registrar todos los errores mediante syslog.

-d

He aqu un ejemplo de utilizacin del comando atd: $ atd -l 2 Despus de ejecutar este comando, el promedio de carga por debajo del cual se ejecutan los comandos batch ser del 2%, no del 0,8%. Una instruccin como esta podra ser necesaria en aquellos sistemas que, por estar muy ocupados, nunca alcancen el nivel de carga del 0,8%. Cuando se introducen trabajos en una cola mediante at/batch, los trabajos se almacenan en el directorio /var/spool/at. Este directorio debe emplear el modo 700 y propiedad/grupo daemon. Para ver el contenido del directorio, es necesario iniciar una sesin como root o se nos denegar el acceso. Dentro del directorio /var/spool/at hay un subdirectorio spool donde se almacena la salida. Este directorio es til al examinar los resultados de las tareas at/batch y tambin tiene el modo 700 y propiedad/grupo daemon. Como se ha comentado antes, cuando atd ejecuta comandos en la cola de at/batch, los resultados enviados a la salida estndar de error o a la salida estndar se envan por correo electrnico al usuario que introdujo originalmente en la cola los comandos (a no ser que se redirijan). El comando utilizado para enviar el correo electrnico es el comando estndar de correo /usr/sbin/sendmail. ESPECIFICACIN DE LOS USUARIOS QUE PUEDEN USAR at Podemos disponer de un completo control sobre qu usuarios del sistema pueden emplear la utilidad at. La seguridad del sistema es la razn principal de limitar el acceso a at. Permitir a los usuarios iniciar tareas cuando tienen iniciada una sesin t-16-linux-tareas-automatizacion-tareas-2002-2005.doc / 5-12

puede representar un potencial agujero de seguridad, por lo que es mejor que se encargue de dichas tareas el administrador del sistema. El archivo /etc/at.deny permite especificar usuarios que no estn autorizados a emplear la utilidad at. Los nombres de usuario se especifican utilizando una lnea para cada nombre. El archivo /etc/at.allow permite especificar exactamente qu usuarios estn autorizados a emplear at. De nuevo, cada nombre de usuario se introduce en una lnea distinta. Si /etc/at.allow no existe, pero s que existe /etc/at.deny, todos los usuarios estn autorizados a emplear at, salvo aquellos especificados en /etc/at.deny. Si existe /etc/at.allow pero /etc/at.deny no existe, slo los usuarios enumerados en /etc/at.allow estn autorizados a emplear at. Si no existe ninguno de los dos archivos, slo puede invocarse a at empleando la cuenta del superusuario.

UTILIZACIN DE cron
A diferencia de la utilidad at, que resulta muy adecuada para planificar tareas puntuales, cron es ideal para configurar tareas que se ejecuten de manera peridica a intervalos o instantes especificados. El concepto fundamental en que se basa cron es el de los archivos crontab. Un archivo crontab es un archivo que contiene comandos para cron, los cuales permiten preparar y configurar tareas cron. Esta seccin examina los siguientes temas relativos a cron: El demonio crond y los archivos crontab. Manipulacin de un archivo crontab. El comando crontab (man crontab). Formato de un archivo crontab (man S5 crontab). Campos de los comandos para los archivos crontab de usuario. Especificacin de los usuarios que pueden usar cron. Ejemplos de uso de comandos cron. Campos de los comandos para los archivos crontab de sistema. Archivos crontab de sistema. Desviacin de la salida de los comandos de cron. Utilizacin de echo (o de printf) como herramienta de depuracin de comandos de cron. Examen de los archivos de registro de cron.

EL DEMONIO crond Y LOS ARCHIVOS crontab crond (/usr/sbin/crond) es el demonio (programa que se ejecuta en 2 plano y permanece en ejecucin a la espera de que se necesite su servicio) que controla la ejecucin de las tareas programadas para el comando cron. Se ejecuta al arrancar el sistema en los niveles de arranque 2, 3, 4 y 5 mediante el enlace simblico /etc/rc.d/rcn.d/S90crond (donde n=2,3,4 o 5) al script /etc/rc.d/init.d/crond. Tambin puede ejecutarse directamente crond. Al arrancar, el demonio crond realiza las siguientes tareas: Carga en memoria y procesa los archivos crontab de los usuarios (archivos que tienen los nombres de los usuarios) contenidos en el directorio /var/spool/cron: contienen las tareas de usuario programadas por los usuarios para cron (cada usuario, incluido root, tiene su propio archivo crontab). Carga en memoria y procesa los archivos crontab de sistema contenidos en /etc/cron.d: contienen las tareas de sistema programadas por root para cron. Carga en memoria y procesa el archivo crontab /etc/crontab, que contiene la configuracin de los directorios que contienen los scripts (o enlaces a los scripts) que contiene las tareas que se ejecutan peridicamente. El contenido predeterminado del archivo /etc/crontab es: SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # comandos run-parts (sintaxis: run-parts directorio) 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly En el archivo /etc/crontab se configuran los directorios /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekely y /etc/cron.monthly (o cualquier otro) que contienen los scripts que se ejecutan peridicamente. He aqu el detalle de lo que el archivo /etc/crontab configura para esos 4 directorios: t-16-linux-tareas-automatizacion-tareas-2002-2005.doc / 6-12

Los contenidos del directorio /etc/cron.hourly se configuran para ejecutarse cada hora, en el primer minuto de la hora. Los contenidos del directorio /etc/cron.daily se configuran para ejecutarse todos los das, en el segundo minuto de la cuarta hora. Los contenidos del directorio /etc/cron.weekely se configuran para ejecutarse todos los domingos, en el minuto 22 de la cuarta hora. Los contenidos del directorio /etc/cron.monthly se configuran para ejecutarse el primer da de cada mes, en el minuto 42 de la cuarta hora.

Ms adelante veremos cmo hemos obtenido todos estos detalles a partir del archivo /etc/crontab, cuando examinemos de qu se compone exactamente un archivo crontab. Todos los contenidos de dichos directorios se ejecutan como el usuario root, por lo que hay que tener cuidado con qu tipo de scripts se colocan en dichos directorios. Si no se tiene cuidado, podran colocarse scripts en dichos directorios que causaran dao al sistema. Despus de que cron arranque y termine de leer todos los archivos crontab, se echa a dormir, despertando cada minuto y verificando si alguno de los crontab almacenados tiene comandos que haya que ejecutar en el minuto actual. El propietario de cada crontab se determina viendo quin es el propietario del archivo crontab o mediante el valor contenido en la variable de entorno MAILTO, si existe una en el crontab. cron tambin comprueba si el archivo /etc/crontab ha cambiado o si alguno de los archivos contenidos en los directorios /var/spool/cron o /etc/cron.d ha cambiado o si se ha aadido algn nuevo archivo. Si ha tenido lugar algn cambio, los archivos afectados se recargan. cron determina si ha habido algn cambio comprobando el tiempo de modificacin de todos los directorios y archivos. Esta caractersticas garantizan que no sea necesario reiniciar el demonio cron cada vez que se actualicen o agreguen elementos crontab. As, los usuarios pueden agregar o modificar elementos crontab sin necesitar privilegios de superusuario para reiniciar cron. MANIPULACIN DE UN ARCHIVO crontab. EL COMANDO crontab (man crontab) Para instalar y manipular (modificar/listar/eliminar) los archivos crontab se emplea el comando crontab. Los distintos usuarios pueden utilizar el comando crontab para mantener sus archivos crontab individuales. Los archivos crontab no deben ser editados de manera directa, porque esto podra causar problemas si, por ejemplo, el archivo est abierto cuando el demonio cron intente leerlo. En lugar de ello, debe emplearse el comando crontab para realizar cambios en dichos archivos. Los archivos crontab proporcionan instrucciones al demonio crond para planificar tareas cron. El comando crontab incluido en Red Hat Linux cumple con el estndar POSIX vigente y difiere de la sintaxis clsica de SVR4 con la cual puede que el lector est familiarizado. Hay cuatro acciones principales que se pueden llevar a cabo en los archivos crontab utilizando el comando crontab: crear/editar e instalar un archivo crontab, listar el contenido de un archivo crontab existente, eliminar un archivo crontab existente e instalar un archivo crontab existente. Los archivos crontab de cada usuario estn contenidos en el directorio /var/spool/cron y el comando crontab permite gestionar los archivos crontab all almacenados. Existen dos formas distintas de invocar al comando crontab: Crear/editar e instalar (-e), listar (-l), eliminar (-d) un archivo crontab: crontab [-u usuario] [-e | -l | -r] -u usuario Al igual que en la primera forma de crontab, la opcin -u permite especificar el nombre del usuario cuyo archivo crontab se quiere manipular. Si no se proporciona la opcin -u, se emplea el nombre del usuario que ha invocado el comando crontab. Recuerde que siempre debe utilizar la opcin -u cuando invoque crontab desde una shell su, por las razones mencionadas anteriormente. Crear/instalar un archivo crontab inicial (si no existe uno) o editar/instalar un archivo crontab existente (si s existe uno) para el usuario especificado. Para esta operacin se emplea un editor de texto. crontab invocar a un editor especfico basndose en el valor de la variable de entorno VISUAL o EDITOR. Si se guarda el archivo crontab modificado desde dentro del editor, el archivo crontab modificado se instala inmediatamente. (Nota: Se puede crear con un editor un archivo crontab con cualquier nombre por ejemplo, microntab y luego instalarlo usando el siguiente formato). Lista el contenido del archivo crontab a travs de la salida estndar. Elimina el archivo crontab del usuario especificado.

-e

-l -r

Instalar un archivo crontab: crontab [-u usuario] archivo -u usuario Permite especificar un nombre de usuario para instalar un nuevo crontab para un usuario especfico. Si no se proporciona la opcin -u, se emplea el nombre de usuario del usuario que realiza la invocacin del t-16-linux-tareas-automatizacion-tareas-2002-2005.doc / 7-12

comando crontab. Cuando se ejecute crontab desde dentro de una shell su, debe siempre emplearse la opcin -u, porque si no se hace as, el comando crontab podra confundirse, con resultados impredecibles. -archivo El nombre del archivo que contiene los comandos que se desean incluir en el nuevo crontab. Si se pasa simplemente como nombre de archivo el carcter -, crontab le da el contenido del nuevo crontab desde la entrada estndar. Cuando se utilice la entrada estndar para especificar el contenido del archivo crontab, hay que emplear el carcter EOF (Ctrl+D) para finalizar la edicin.

Cuando utilice esta forma del comando crontab, recuerde que cada usuario slo puede tener un archivo crontab. Por tanto, al instalar un nuevo archivo crontab, se sustituye el archivo crontab antiguo por el nuevo. Todo lo que contuviera el antiguo archivo crontab ser sobrescrito por el nuevo. FORMATO DE UN ARCHIVO crontab (man 5 crontab) Los archivos crontab pueden contener comentarios, asignaciones a variables de entorno o comandos cron. Los comentarios en un archivo crontab empiezan en lneas individuales con el carcter de almohadilla (#). A1 contrario que en los scripts de la shell, los comentarios deben estar en sus propias lneas; no pueden incluirse comentarios en la misma lnea que un comando cron o que una asignacin a una variable de entorno. Las asignaciones a variables de entorno en los archivos crontab son iguales que en los scripts de la shell. sta es la forma general: nombre = valor Los espacios alrededor del signo igual (=) son opcionales y no afectan a la asignacin de la variable. El contenido de valor puede contener espacios, pero los espacios sufijos son ignorados a menos que se encierre valor entre comillas, en cuyo caso se mantienen tanto los espacios prefijos como los sufijos. Cuando el demonio cron arranca, configura una serie de variables de entono de manera predeterminada. Dichas variables son las siguientes: SHELL LOGNAME HOME Le asigna el valor /bin/sh. Le asigna el nombre del usuario, obtenido de la entrada correspondiente al usuario en el archivo /etc/passwd. Le asigna el directorio principal del usuario, tambin obtenido de la entrada correspondiente al usuario en el archivo /etc/passwd.

Los valores de las variables SHELL y HOME pueden sustituirse dentro del archivo crontab, pero no puede sustituirse el valor de LOGNAME. Puede ser conveniente cambiar la shell si los scripts que se utilizan son para una shell diferente o si se necesita utilizar caractersticas especficas de una shell. Igualmente, puede ser til sustituir el directorio principal para mantener los resultados de las tareas cron separados de otra informacin. cron utiliza tambin el valor de la variable de entorno MAILTO para obtener la direccin de correo electrnico del usuario al que tiene que enviar correo. Toda la salida de los comandos que se ejecuten a partir del archivo crontab de un usuario se enviarn al usuario especificado en la variable MAILTO correspondiente a dicho usuario concreto. Si la variable MAILTO est configurada pero est vaca (MAILTO=), la funcionalidad de correo electrnico se desactiva y no se enva ningn correo. Si la variable MAILTO no est configurada, el correo se enviar al propietario del archivo crontab a partir del cual se ejecutaron los comandos. El tercer tipo de elemento que puede encontrarse en un archivo crontab son comandos cron. Cada entrada de comando consiste en una lnea con campos de la fecha y hora especficas en la que un comando debe ejecutarse y el comando que debe ejecutarse. Existe alguna diferencia entre las lneas de comandos para los archivos crontab de usuario y los archivos crontab globales contenidos en el directorio /etc. cron ignora las lneas en blanco y los espacios utilizados como prefijo en los archivos crontab. CAMPOS DE LOS COMANDOS PARA LOS ARCHIVOS crontab DE USUARIO Los archivos crontab de usuario se almacenan en el directorio /var/spool/cron. Son, esencialmente, una lista que indica qu hay que hacer y cundo. Cada comando de un archivo crontab de usuario est contenido en una nica lnea y consta de 6 campos separados por espacio o tabulador. He aqu el formato general: minuto hora da-mes mes da-semana comando

Los valores admitidos para dichos campos son los siguientes: minuto hora El valor va de 0 a 59. El valor va de 0 a 23. t-16-linux-tareas-automatizacion-tareas-2002-2005.doc / 8-12

da-mes mes da-semana comando

El valor va de 1 a 31. El valor va de 1 a 12 o ser las tres primeras letras del nombre del mes en ingls, desde jan (enero) a dec (diciembre). El valor va de 0 a 7 (donde 0 7 corresponde al domingo) o ser las tres primeras letras del nombre del da en ingls, desde sun (domingo) a sat (sbado). El comando que hay que ejecutar en el instante especificado; puede estar compuesto por una o ms palabras. cron ejecutar simplemente como un comando todo lo que encuentre en la lnea despus del campo da-semana, hasta que encuentre el carcter de salto de lnea. Adems de poder utilizarse el carcter de salto de lnea para especificar el final del comando, tambin puede emplearse un signo de porcentaje (%) sin secuencia de escape. Los datos que haya en la lnea despus del signo de porcentaje sern enviados como argumentos al comando. El comando ver esos argumentos como si hubieran sido pasados a travs de la entrada estndar.

Cualquiera de estos campos de fecha y hora puede tambin incluir un asterisco (*), lo que har que dicho campo tome el valor true para todos los posibles valores. Para todos los campos de fecha y hora, adems de poder especificar un nico valor, puede tambin especificarse un rango de valores. Los rangos de valores estn compuestos por dos valores separados por un guin (-). Todos los valores comprendidos entre los dos valores especificados (incluidos stos) tomarn el valor true para dicho campo. Por ejemplo, si se especifica el rango 4-6 en el campo correspondiente al mes, el comando se ejecutar cuando el mes sea 4, 5 6, lo que es equivalente a que esta tarea slo se ejecute en el segundo trimestre. De forma similar, podramos hacer que una tarea slo se ejecutara en los das laborables o durante los fines de semana. Tambin puede emplearse una lista en los campos de fecha y hora. Una lista es un conjunto de valores separados por comas (,). Las listas tambin pueden incluir rangos dentro de sus valores. Un ejemplo de lista sera 3, 5, 7 - 9, 15. Si se proporcionara dicha lista como valor del campo da-mes, el comando especificado solo se ejecutara en los das 3, 5, 7, 8, 9 y 15 del mes. Adems de valores simples y rangos de valores, pueden usarse lo que se denomina valores de incremento dentro de las listas. Los valores de incremento se incluyen despus de los rangos y su formato es /nmero. Un valor de incremento es un rango para el cual slo toman el valor true los valores situados a incrementos especficos. Un ejemplo de valor de incremento sera 0-20/2. Para este rango slo tendr el valor true uno de cada dos valores del rango. Tambin puede emplearse el asterisco con un valor de incremento. Por ejemplo, para hacer que un comando se ejecute cada 2 horas, puede usarse como valor de incremento */2. A la hora de especificar valores para el campo da-semana o el campo mes, tambin pueden usarse los primeros tres caracteres del nombre el ingls del da o del mes en lugar de un nmero. Por ejemplo, en lugar de poner un 0 en el campo da-semana, pueden ponerse los 3 caracteres sun para especificar el domingo. Existe un problema cuando se utilizan palabras en vez de nmeros: no pueden usarse rangos ni listas en tal contexto. Para cada comando cron en un archivo crontab, el comando especificado se ejecuta cuando la hora, el minuto y el mes especificados se corresponden con los valores actuales del sistema y el valor de da-mes o de da-semana se corresponden con el valor de da actual del sistema. Pueden producirse problemas con cron durante los cambios de hora que se producen al pasar de horario de verano a horario de invierno o viceversa, porque las correspondencias con los valores del sistema podran fallar o tener lugar dos veces. Esto puede evitarse no planificando tareas para los momentos donde vayan a producirse cambios de hora. Por la misma razn, las tareas que se tengan que ejecutar cada hora deben planificarse para que tengan lugar unos cuantos minutos despus de la hora en punto. Finalmente, si se configura el reloj hardware con la hora universal se evitar el problema, porque los cambios de hora slo afectan a la hora local, no a la hora universal. Como hemos mencionado anteriormente, cron comprueba todos los valores de sus comandos crontab cada minuto. ESPECIFICACIN DE LOS USUARIOS QUE PUEDEN USAR cron Puede especificarse exactamente qu usuarios del sistema pueden usar cron y agregar sus propias entradas crontab. Hay dos archivos en el directorio /etc que permiten controlar los privilegios de acceso a cron; dichos archivos son /etc/cron.allow y /etc/cron.deny. Si existe el archivo /etc/cron.allow y el archivo /etc/cron.deny no existe, slo los usuarios enumerados en aquel archivo estarn autorizados a ejecutar cron, y cada nombre de usuario debe encontrarse en una lnea separada dentro del archivo. Si existen ambos archivos, se aplican las mismas reglas que si no existiera el archivo /etc/cron.deny. Si el archivo /etc/cron.deny existe pero el archivo /etc/cron.allow no existe, todos los usuarios pueden usar cron, excepto aquellos enumerados en el archivo /etc/cron.deny. Si no existe ninguno de los dos archivos, slo el superusuario ser capaz de usar cron y tener archivos crontab, en circunstancias normales. t-16-linux-tareas-automatizacion-tareas-2002-2005.doc / 9-12

EJEMPLOS DE USO DE COMANDOS cron Vamos a examinar ahora algunos comandos cron de ejemplos de archivos crontab, para analizar exactamente que hace cada una. El siguiente comando crontab har que se imprima la cadena "Es la una de la madrugada" cada da a las 1:00 AM. Esto har que el propietario del archivo crontab reciba un correo electrnico diariamente a las 1:00 AM con las palabras "Es la una de la madrugada" en el cuerpo del mensaje. 0 1 * * * echo "Es la una de la madrugada" He aqu un ejemplo ligeramente ms complejo: 1 5 10 jul * echo "Hoy es 10 de julio" Este comando crontab es similar al primer ejemplo, pero esta vez la cadena que se proporciona como salida es "Hoy es 10 de julio"", en lugar de "Es la una de la madrugada". Adems, esta vez el comando se ejecuta slo una vez al ao, el da 10 de julio a las 5:01 de la maana. Veamos un ejemplo que utiliza un valor de lista: * 2,5,15 4,20 * * find / -name core -print Este ejemplo le enviar un correo electrnico con una lista de todos los archivos core del sistema y se ejecutar a las 2:00, 5:00 y 15:00 de los das 4 y 20 de cada mes. Aqu, los valores de lista permiten especificar ms de un valor para un campo determinado. He aqu un ejemplo que utiliza valores de rango con un comando crontab: * 5 4-10 0-3 * find / -name core -print Este ejemplo lleva a cabo la misma tarea que el ejemplo anterior, pero esta vez se ejecuta a las 5:00 de los das 4, 5, 6, 7, 8, 9 y 10 de los meses de enero, febrero, marzo y abril. Los valores de rango resultan muy tiles cuando se quiere definir un abanico de valores contiguos. A continuacin podemos ver otro ejemplo, que hace use de la notacin de valor de incremento: * */2 * * sat rm -rf /tmp/* En este caso, el comando rm -rf/tmp/* se ejecuta cada dos horas todos los sbados. El valor */2 es true en cada hora par del da, y es equivalente a utilizar la lista 0,2,4,6, 8,10,12,14,16,18,20,22. CAMPOS DE LOS COMANDOS PARA LOS ARCHIVOS crontab DE SISTEMA El formato de los archivos crontab del sistema es ligeramente distinto que para los archivos crontab de usuario. Los archivos crontab del sistema son los que se almacenan en el directorio /etc/cron.d y, adems, el archivo /etc/crontab. En estos archivos hay un campo extra para los comandos cron que permite especificar bajo qu cuenta de usuario debe ejecutarse el comando. He aqu el formato general para los comandos cron en los archivos crontab del sistema: minuto minuto hora da-mes mes da-semana hora da-mes mes da-semana nombre-usuario comando

El valor va de 0 a 59. El valor va de 0 a 23. El valor va de 1 a 31. El valor puede ir de 1 a 12 o ser las tres primeras letras del nombre del mes en ingls, desde jan (enero) a dec (diciembre). El valor va de 0 a 6 (donde 0 corresponde al domingo); tambin pueden utilizarse las tres primeras letras del nombre del da en ingls, desde sun (domingo) a sat (sbado).

nombre-usuario El nombre del usuario bajo el cual debe ejecutarse el comando. comando El comando que hay que ejecutar en el instante especificado. Puede estar compuesto por mltiples palabras.

Todas las dems caractersticas disponibles en los archivos crontab de usuario estn tambin disponibles en los archivos crontab del sistema. Al igual que sucede con los archivos crontab definidos por usuario, para cada comando cron contenido en un archivo crontab del sistema, el comando especificado se ejecuta cuando la hora el minuto y el mes especificados se corresponden con los valores actuales del sistema, y el valor de da-mes o de da-semana se corresponden con el valor de da actual del sistema. t-16-linux-tareas-automatizacion-tareas-2002-2005.doc / 10-12

La nica diferencia es que ahora el comando se ejecuta bajo el nombre de usuario especificado, en lugar de bajo el nombre de usuario del propietario del archivo. ARCHIVOS crontab DE SISTEMA Como hemos mencionado anteriormente, el archivo /etc/crontab configura varios directorios cron bajo el directorio /etc, donde se pueden colocar los archivos que cron tenga que ejecutar peridicamente. Existen cuatro de estos directorios: /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly y /etc/cron.monthly. Puede almacenarse cualquier nmero de scripts en dichos directorios, y estos scripts pueden ser de cualquier tipo. Asegrese simplemente de que sean ejecutables. Como tambin hemos mencionado anteriormente, los scripts colocados en el directorio /etc/cron.hourly sern ejecutados por cron cada hora, en el primer minuto de la hora. Si se coloca algn script en el directorio /etc/cron.daily, ser ejecutado una vez al da, en el segundo minuto de la cuarta hora. Los scripts del directorio /etc/cron.weekly se ejecutan una vez por semana, en el minuto 22 de la cuarta hora del domingo. Finalmente, los scripts del directorio /etc/cron.monthly se ejecutan el primer da de cada mes, en el minuto 42 de la cuarta hora. El tipo de scripts que conviene incluir en estos subdirectorios cron son scripts peridicos sobre los que no es necesario tener un alto grado de control. Puede conseguirse un control mucho mayor utilizando comandos configurados como archivos crontab: sin embargo, hay ciertas tareas que simplemente deseamos ejecutar de forma regular, por ejemplo una vez al da. En tal caso, es ms fcil crear simplemente el script y luego copiarlo en el directorio /etc/cron.daily. Ni siquiera hace falta preocuparse de crear una entrada crontab; casi resulta excesivamente fcil. Un ejemplo sera sincronizar el reloj del sistema con la hora universal (es necesario realizar esta tarea con el debido cuidado; o explorar el sistema en busca de ciertos tipos de archivos (virus, archivos con contenido pornogrfico?, etc.). DESVIACIN DE LA SALIDA DE LOS COMANDOS DE cron Puede redirigirse la salida de las tareas cron hacia archivos especficos (en vez de hacia el correo) usando la sintaxis estndar de redireccin de la salida. Esto resulta muy til porque crear archivos despus de ejecutar cada tarea cron, los cuales pueden examinarse en busca de errores y depurarse si es necesario. He aqu un ejemplo de un comando crontab que enviar todos los errores del comando especificado a un archivo: 0 1 * * * rm -rf /tmp/* 2>/home/virgilio/rm-tmp.cron Utilizando este comando, si se produce cualquier error cuando cron est tratando de ejecutar el comando rm -rf/tmp/*, el error se almacenar en el archivo /home/virgilio/del tmp.cron. Cada vez que se ejecuta la tarea cron, sobrescribe el contenido del archivo /home/virgilio/rm-tmp.cron con los errores que se hayan producido en la ltima tarea cron. Redirigir la salida de un comando puede ser tambin muy til porque permite que toda la salida de dicho comando vaya a un archivo, en lugar de que se enve un correo electrnico. Si recibe numerosos mensajes intiles de correo electrnico procedentes de una tarea cron especfica, puede cambiar la entrada crontab de dicha tarea, redirigiendo la salida a un archivo. UTILIZACIN DE echo (O DE printf) COMO HERRAMIENTA DE DEPURACIN DE COMANDOS DE cron Pueden usarse los comandos echo (o printf) en los archivos crontab para imprimir lo que estn haciendo exactamente los comandos de la entrada crontab. Cuando echo (o printf) muestre cualquier salida, dicha salida ser enviada por correo electrnico al usuario del archivo crontab, para que ste pueda examinar exactamente qu es lo que est haciendo su tarea cron. Por ejemplo, supongamos que tenemos el siguiente script de shell que queremos ejecutar diariamente a una hora especfica: #/bin/sh rm -rf /home/virgilio/backup/* cp -r /home/virgilio/files/* /home/virgilio/backup/ Si algo va mal con este script, recibiremos por correo electrnico los mensajes de error generados como salida por los comandos del script. Sin embargo, si tenemos varios de estos scripts ejecutndose forma diaria, los propios mensajes de error podran llegar a ser confusos, sin que supiramos exactamente qu comando est causando el error. Es una buena idea imprimir cada comando antes de ejecutarlo de modo que, cuando se enve por correo electrnico la salida, dispongamos de una lista de todos los comandos ejecutados. Si sucede algn error, aparecer directamente detrs del comando. Esto permitir saber inmediatamente qu comando produjo el error. He aqu el mismo script, pero esta vez utilizando algunos comandos echo para proporcionar como salida algo de informacin extra: !#/bin/sh echo Haciendo copia de seguridad de /home/virgilio/files a /home/virgilio/backup echo rm -rf /home/virgilio/backup/* t-16-linux-tareas-automatizacion-tareas-2002-2005.doc / 11-12

rm -rf /home/virgilio/backup/* echo cp -r /home/virgilio/files/* /home/virgilio/backup/ cp -r /home/virgilio/files/* /home/virgilio/backup/ echo Fin del script de copia de seguridad Para hacer que cron ejecute este script una vez al da, a las 2:00 AM, aada la siguiente entrada a su archivo crontab (suponiendo que hallamos grabado el script anterior como backup.sh): 0 2 * * * /home/virgilio/backup.sh Si est aadiendo muchas rdenes de salida a sus scripts cron, tenga cuidado si el .script cron se ejecuta varias veces al da, porque enviar un correo electrnico cada vez que se ejecute. Si cada uno de estos mensajes de correo tiene varias lneas de salida, puede encontrarse con que su espacio de disco empieza a agotarse si no borra los mensajes con regularidad. Esto es especialmente cierto para los scripts ejecutados como root, porque puede que no inicie una sesin como root durante varios das y la cantidad de correo electrnico enviado desde cron puede crecer bastante rpidamente. Por supuesto, tambin puede usarse el comando printf en lugar echo si se quiere dar un formato especfico a la salida. Esto puede ser necesario, por ejemplo, si los archivos van a ser importados a una base de datos a hoja de clculo. En muchas situaciones, sin embargo, el comando echo es ms que suficiente. EXAMEN DE LOS ARCHIVOS DE REGISTRO DE cron Hay varios archivos situados bajo el directorio /var/log donde cron registra todos los comandos que ejecuta. Los archivos se denominan cron, cron.1, cron.2, cron.3 y cron.4 y debe disponerse de privilegios de superusuario para poder ver su contenido. En el archivo /var/log/cron, se pueden ver todas las veces que cron ha sido ejecutado a lo largo del ltimo da. Los archivos cron.1, cron.2 y cron.3 contienen informacin similar, aunque ligeramente ms antigua que cron. Los archivos de registro de cron son muy tiles para comprobar si las tareas cron se estn ejecutando en el momento correcto o incluso si se estn llegando a ejecutar. Si hay muchas tareas cron configuradas en el sistema, conviene comprobar los archivos de registro cron cada pocos das, simplemente para cerciorarse de que todas las tareas cron se estn ejecutando apropiadamente.

CUANDO LA MQUINA NO EST ENCENDIDA CONTINUAMENTE: anacron


(man anacron) (man 5 anacrontab) anacron se usa para ejecutar tareas peridicas, con una frecuencia especificada en das. Al contrario que cron, no asume que la mquina est encendida continuamente, por lo que se debe usar en mquinas que no estn en ejecucin 24 horas al da, para controlar las tareas diarias, semanales y mensuales programadas para ser ejecutadas por cron. anacron lee la lista de tareas del fichero de configuracin /etc/anacrontab. El fichero contiene lneas de variables y lneas de tareas formada por cuatro campos. El contenido por defecto es el que se muestra a continuacin: SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # tiempo(das) 1 7 30 demora(minutos) 65 70 75 identificador-tarea cron.daily cron.weekly cron.monthly comando run-parts /etc/cron.daily run-parts /etc/cron.weekly run-parts /etc/cron.monthly

anacron chequea si la tarea (campo 3) ha sido ejecutada en los ltimos das (campo 1), y en caso de que no, ejecuta el comando de la tarea (campo 4), despus de esperar los minutos de demora (campo 2). Finalizada la tarea, anacron registra la fecha en el fichero de marca de fecha que se encuentra en el directorio /var/spool/anacron. Notas: Arrancar el servicio anacron: orden /sbin/service anacron start. (Se recomienda arrancar el servicio en el momento del arranque). Detener el servicio anacron: orden /sbin/service anacron stop.

BIBLIOGRAFA ADMINISTRACIN DE REDHAT LINUX. THOMAS SCHENK ET AL. PRENTICE HALL AL DESCUBIERTO. 2001 t-16-linux-tareas-automatizacion-tareas-2002-2005.doc / 12-12

You might also like