Configuración y uso de Atd.

Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: http://www.alcancelibre.org/
Jabber ID: darkshram@jabber.org

Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2015 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector, hace mal uso de éstos.

Introducción.

Acerca de at y batch.

Tanto at como batch se utilizan para programar la ejecución de mandatos de una sola ocasión. En el caso de que se requiera programar mandatos para ser ejecutados periódicamente, se sugiere hacerlo a través de crontab.

Ambos interpretan otros mandatos directamente desde la entrada estándar (STDIN) o a partir de un archivo especificado. Mientras que at permite especificar que un mandato sea ejecutado a una hora y fecha específicos, batch permite ejecutar ésté sólo cuando descienden los niveles de carga de trabajo del sistema hasta un nivel en particular. Ambos utilizan el intérprete de mandatos del sistema.

Equipamiento lógico necesario.

De modo predeterminado el servicio atd viene habilitado en los niveles de ejecución 2, 3, 4 y 5 y seguramente estará en ejecución.

Salvo que se haya hecho algún cambio en el archivo /etc/sysconfig/atd, como por ejemplo para añadir algún argumento al inicio del servicio, es innecesario reiniciar el servicio. La ejecución de los mandatos programados se realiza procesando el contenido de los archivos y directorios de configuración

En CentOS, Fedora™ y Red Hat™ Enterprise Linux.

Si utiliza CentOS o Red Hat™ Enterprise Linux, el paquete at se incluye en la instalación predeterminada. De ser necesario, ejecute lo siguiente para instalar el paquete at:

yum -y install at

Para iniciar el servicio por primera vez, en caso de que recién se haya instalado atd, ejecute:

service atd start

En openSUSE™ y SUSE™ Linux Enterprise.

El paquete at se incluye en la instalación predeterminada de openSUSE™. Si fuese necesario, instale el paquete at ejecutando lo siguiente:

yast -i at

Para iniciar el servicio por primera vez, en caso de que recién se haya instalado at, ejecute:

rcatd start

Procedimientos.

Archivos de configuración /etc/at.allow y /etc/at.deny.

El archivo /etc/at.deny se utiliza para definir una lista de usuarios a los cuales se les denegará el uso de at. Cuando este archivo está vacío, implica que todos los usuarios del sistema pueden hacer uso de at.

El archivo /etc/at.allow es inexistente de modo predeterminado. Cuando éste existe, sólo los usuarios listados en su interior pueden hacer uso de at.

En ausencia del archivo /etc/at.allow, el sistema utilizará siempre /etc/at.deny para el control de acceso para at.

En ausencia de los archivos /etc/at.allow y /etc/at.deny, sólo el usuario root puede hacer uso de at.

Directorio /var/spool/at.

Todos los mandatos programados con at y batch se almacenan dentro del directorio /var/spool/at.

Uso de at.

Puede utilizar at para ejecutar mandatos a una determinada hora y fecha.

Puede ingresar tiempos para at en el formato HH:MM. Cuando se ejecuta con una hora que ya ha pasado, el sistema asume que se refiere al día siguiente. También se pueden especificar valores como midnight (media noche, 00:00), noon (12:00) o teatime (16:00). Ejemplo:

at 17:30

Para especificar la fecha se utiliza el formato nombre-del-mes día, siempre y cuando se especifique después de la hora de ejecución. Ejemplo:

at 18:20 Sep 27

Opcionalmente también se puede definir el año. Ejemplo:

at 18:20 Sep 27 2014

También se puede especificar en el formato MMDDAAAA, MM/DD/AAAA o DD.MM.AAAA. Ejemplos:

at 10:30 01152015
at 10:30 01/15/2015
at 10:30 15.01.2015

Los tres ejemplos anteriores ejecutan algo el 15 de enero de 2015 a las 10:30 AM.

También es posible utilizar una hora específica y establecer si se ejecuta ahora (now) más unidades de tiempo, como horas (hurs), días (days) y semanas (weeks). Ejemplo:

at 10:30 now + 15 days

Lo anterior establece se ejecute algo a las 10:30 AM dentro de 15 días.

at 10:30 now + 6 weeks

Lo anterior establece se ejecute algo a las 10:30 AM dentro de 6 semanas.

También permite establecer la ejecución utilizando today (hoy) y tomorrow (mañana) como argumentos. Ejemplo

at 12:25 tomorrow

El formato completo para la definición de tiempo se puede consultar examinando el contenido del archivo /usr/doc/at/timespec.

Una vez que se ejecuta at con alguna hora en particular, se escribe en pantalla el mandato o conjunto de mandato deseados. Pulse CTRL-D para guardar los cambios y salir del intérprete de mandatos de at.

Utilizando la opción -f se puede utilizar un archivo específico en lugar de la entrada estándar.

at 10:30 today -f /home/usuario/bin/trabajo.sh

Que es lo mismo que ejecutar lo siguiente:

at 10:30 today < /home/usuario/bin/trabajo.sh

El manual completo de at puede consultarse ejecutando lo siguiente:

man 1 at

Uso de batch.

Puede utilizar batch para ejecutar mandatos cuando el nivel de carga del sistema cae por debajo de 0.8 o bien el valor que se especifique con atrun. Cabe señalar que batch sólo permite el uso de la opción -f para definir el nombre de un archivo para ser utilizado en lugar de la salida estándar. Ejemplo:

batch -f /home/usuario/bin/trabajo.sh

Lo anterior es lo mismo que ejecutar lo siguiente:

batch < /home/usuario/bin/trabajo.sh

Para cambiar el valor de la carga máximo para poder ejecutar los mandatos programados con batch, se ejecuta atrun con la opción -l y el valor de carga deseado. Ejemplo:

atrun -l 0.9

Uso de atq.

Puede ejecutar atq para mostrar una lista de todos los mandatos pendientes. Cuando se ejecuta como usuario regular muestra exclusivamente los mandatos pendientes de ese usuario en particular. Ejemplo:

atq

La salida de lo anterior —cuando hay mandatos pendientes— puede ser similar a la siguiente.

7	Tue Sep 25 14:30:00 2012 a fulano
5	Thu Jan 15 10:30:00 2015 a fulano
8	Wed Sep 26 14:30:00 2012 a root
6	Thu Jan 15 10:30:00 2015 a zutano

Cabe señalar que atq es en realidad un atajo de at con la opción -l.

at -l

Lo anterior mostrará todos los mandatos pendientes de todos los usuarios cuando se ejecuta como root.

Uso de atrm.

Puede utilizar atrm para eliminar mandatos pendientes, utilizando el número de mandato como argumento. Ejemplo:

atrm 2

Lo anterior es lo mismo que ejecutar lo siguiente:

at -d 2