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.
|