Gestión del rendimiento, los procesos y la información del sistema en Oracle® Solaris 11.2

Salir de la Vista de impresión

Actualización: Septiembre de 2014
 
 

Programación de una sola tarea del sistema (at)

    Las siguientes secciones describen cómo utilizar el comando at para realizar las siguientes tareas:

  • Programar trabajos (comando y secuencias de comandos) para ejecutar más tarde.

  • Visualizar y eliminar trabajos.

  • Controlar el acceso al comando at.

De manera predeterminada, los usuarios pueden crear, visualizar y eliminar sus propios archivos de trabajo at. Para acceder a archivos at que pertenecen a root o a otros usuarios, debe asumir el rol de usuario root.

Ejecución de un archivo de trabajo at

Al ejecutar un trabajo at, se le asigna un número de identificación de trabajo con la extensión .a. Esta designación se convierte en el nombre de archivo del trabajo y en su número de cola.

La ejecución de un archivo de trabajo at implica estos pasos:

  1. Invocar la utilidad at y especificar una hora de ejecución de comando.

  2. Escribir un comando o una secuencia de comandos para ejecutar más tarde.


    Notas -  En caso de que el resultado de este comando o de esta secuencia de comandos sea importante, asegúrese de dirigir el resultado a un archivo para investigarlo posteriormente.

Por ejemplo, el siguiente trabajo at elimina archivos core de la cuenta de usuario smith casi a la medianoche del último día del mes de julio.

$ at 11:45pm July 31
at> rm /home/smith/*core*
at> Press Control-d
commands will be executed using /bin/csh
job 933486300.a at Tue Jul 31 23:45:00 2004

Creación de un trabajo at

La tarea siguiente describe cómo crear un trabajo at.

Cómo crear un trabajo at

  1. Inicie la utilidad at y especifique la hora a la que desea ejecutar el trabajo.
    $ at [-m] time [date] 
    -m

    Especifica que le envíe un correo electrónico al finalizar el trabajo.

    time

    Especifica la hora en que desea programar el trabajo. Agregue am o pm si no especifica las horas según el reloj de 24 horas. Las palabras clave aceptables son midnight, noon y now. Los minutos son opcionales.

    date

    Especifica las primeras tres (o más) letras de un mes o un día de la semana, o las palabras clave today o tomorrow.

  2. En el indicador at, escriba los comandos o las secuencias de comandos que desea ejecutar (uno por línea).

    Puede introducir más de un comando presionando Intro al final de cada línea.

  3. Presione Control-D para salir de la utilidad at y guardar el trabajo at.

    A su trabajo at se le asigna un número de cola, que también es el nombre del archivo de trabajo. Este número se muestra al salir de la utilidad at.

Ejemplo 4-7  Creación de un trabajo at

El siguiente ejemplo muestra el trabajo at que el usuario jones creó para eliminar sus archivos de copia de seguridad a las 7:30 p. m. Utilizó la opción –m, de modo que recibirá un mensaje de correo electrónico después de que finaliza el trabajo.

$ at -m 1930
at> rm /home/jones/*.backup
at> Press Control-D
job 897355800.a at Thu Jul  12 19:30:00 2004

Recibió un mensaje de correo electrónico que confirmó la ejecución de su trabajo at.

Your “at” job “rm /home/jones/*.backup”
completed.

El siguiente ejemplo muestra cómo jones programó un trabajo at de gran tamaño para las 4:00 a. m. del sábado. El resultado del trabajo se dirigió a un archivo llamado big.file.

$ at 4 am Saturday
at> sort -r /usr/dict/words > /export/home/jones/big.file

Visualización de la cola de at

Para comprobar los trabajos que figuran en la cola de at, utilice el comando atq.

$ atq

Este comando muestra información de estado sobre los trabajos at que ha creado.

Verificación de un trabajo at

Para verificar la creación de un trabajo at, utilice el comando atq. En el siguiente ejemplo, el comando atq confirma que los trabajos at que pertenecen a jones se han enviado a la cola.

$ atq
Rank	  Execution Date     Owner     Job         Queue   Job Name
  1st   Jul 12, 2004 19:30   jones  897355800.a     a     stdin
  2nd   Jul 14, 2004 23:45   jones  897543900.a     a     stdin
  3rd   Jul 17, 2004 04:00   jones  897732000.a     a     stdin

Visualización de trabajos at

Para mostrar información sobre las horas de ejecución de los trabajos at, utilice el comando at -l.

$ at -l [job-id]

donde –l job-id es el número de identificación opcional de un trabajo específico cuyo estado desea visualizar. Sin un ID, el comando muestra el estado de todos los trabajos ejecutados por el usuario.

Ejemplo 4-8  Visualización de trabajos at

En el siguiente ejemplo, se muestra la salida del comando at -l, que proporciona información sobre el estado de todos los trabajos ejecutados por el usuario.

$ at -l
897543900.a	Sat Jul 14 23:45:00 2004
897355800.a	Thu Jul 12 19:30:00 2004
897732000.a	Tue Jul 17 04:00:00 2004

El siguiente ejemplo muestra la salida que se visualiza cuando se especifica un solo trabajo con el comando at -l.

$ at -l 897732000.a
897732000.a		Tue Jul 17 04:00:00 2004

Cómo eliminar trabajos at

Antes de empezar

Asuma el rol root para eliminar un trabajo at que pertenece al usuario root o a otro usuario. Consulte Uso de sus derechos administrativos asignados de Protección de los usuarios y los procesos en Oracle Solaris 11.2 .

No necesita asumir el rol de usuario root para eliminar su propio trabajo at.

  1. Elimine el trabajo at de la cola antes de ejecutar el trabajo.
    # at -r [job-id]

    Donde la opción –r job-id especifica el número de identificación del trabajo que desea eliminar.

  2. Verifique que el trabajo at se elimine con el comando at -l (o atq).

    El comando at -l muestra los trabajos que quedan en la cola at. El trabajo cuyo número de identificación ha especificado no debe aparecer.

    $ at -l [job-id]
Ejemplo 4-9  Eliminación de trabajos at

En el siguiente ejemplo, un usuario desea eliminar un trabajo at programado para ejecutarse el 17 de julio, a las 4 a. m. En primer lugar, el usuario muestra la cola at para ubicar el número de identificación del trabajo. Luego, el usuario elimina este trabajo de la cola at. Por último, el usuario verifica que este trabajo se haya eliminado de la cola.

$ at -l
897543900.a	Sat Jul 14 23:45:00 2003
897355800.a	Thu Jul 12 19:30:00 2003
897732000.a	Tue Jul 17 04:00:00 2003
$ at -r 897732000.a
$ at -l 897732000.a
at: 858142000.a: No such file or directory

Control del acceso al comando at

Puede configurar un archivo para que controle el acceso al comando at y para que permita que sólo los usuarios especificados creen, eliminen o visualicen información de cola sobre sus trabajos at. El archivo que controla el acceso al comando at, /etc/cron.d/a.deny, consta de una lista de nombres de usuario (un nombre de usuario por línea). Los usuarios que se muestran en este archivo no pueden acceder a comandos at.

El archivo at.deny, que se crea durante la instalación del software Oracle Solaris, contiene los siguientes nombres de usuario:

daemon
bin
smtp
nuucp
listen
nobody
noaccess

Con privilegios de superusuario, puede editar el archivo at.deny para agregar otros nombres de usuario cuyo acceso al comando at desee restringir.

Denegación de acceso al comando at

Como usuario root, edite el archivo /etc/cron.d/at.deny para agregar los nombres de usuario (un nombre de usuario por línea) a los que se les impedirá utilizar los comandos at.

daemon
bin
smtp
nuucp
listen
nobody
noaccess
username1
username2
username3
.
.
.
Ejemplo 4-10  Denegación de acceso a at

El siguiente ejemplo muestra un archivo at.deny que se ha editado para que los usuarios smith y jones no puedan acceder al comando at.

$ cat at.deny
daemon
bin
smtp
nuucp
listen
nobody
noaccess
jones
smith
Verificación de la denegación de acceso al comando at

Para verificar que un nombre de usuario se agregó correctamente al archivo /etc/cron.d/at.deny, utilice el comando at -l mientras está conectado como el usuario. Por ejemplo, si el usuario que inició sesión smith no puede acceder al comando at, aparece el siguiente mensaje:

# su smith
Password:
# at -l
at: you are not authorized to use at.  Sorry.

Del mismo modo, si el usuario intenta ejecutar un trabajo at, aparece el siguiente mensaje:

# at 2:30pm
at: you are not authorized to use at.  Sorry.

Este mensaje confirma que el usuario aparece en el archivo at.deny.

Si se permite el acceso al comando at, el comando at -l no devuelve nada.