comando at

Automatización de tareas. AT

Diferencia entre cron y at.
A diferencia de cron. Las tareas encomendadas a at solamente se ejecutarán una vez.

Como se ha visto en la nota anterior, las tareas a ejecutar por el demonio atd solamente se van a realizar una vez y no se volverán a ejecutar a menos que volvamos a ejecutar el comando para programarlas.

at es un conjunto de programas los cuales se detallan a continuación:

  • atd – Es el demonio encargado de ejecutar todas las tareas encomendadas a at.
  • at – Es el comando para programar tareas.
  • atq – Es un comando que muestra las tareas pendientes de ejecutar por el usuario que lo invoca.
  • atrm – Es un comando que elimina una tarea de la lista de pendientes.
  • La instalación de at en el sistema (Ubuntu) se realizará con el siguiente comando:

    $ apt-get install at

    Ejemplo de utilización

    En el siguiente ejemplo vamos a dejar programado para dentro de cinco minutos un borrado de todos los archivos (no directorios) del directorio /tmp. Para ello ejecutaremos el comando “at now +5 min”:

    morenoperezjc@morenoperezjc-K53SD:~$ at now +5 min
    warning: commands will be executed using /bin/sh
    at> rm /tmp/*
    at>
    job 3 at Fri Dec 20 09:00:00 2013

    Una vez ejecutamos este comando at, el sistema nos va a pedir comandos hasta que tecleemos CTRL+D (EOT). En ese momento el sistema deja programado el trabajo con su identificador correspondiente (job 3) y nos avisa cuando se va a ejecutar (job 3 at Fri Dec 20 09:00:00 2013).

    El siguiente paso a realizar es listar los trabajos pendientes con el comando atq:

    morenoperezjc@morenoperezjc-K53SD:~$ atq
    3 Fri Dec 20 09:00:00 2013 a morenoperezjc
    morenoperezjc@morenoperezjc-K53SD:~$

    Podemos ver que la tarea 3 está pendiente de ejecución y la ha lanzado el usuario morenoperezjc.

    Si se quiere eliminar la tarea número 3 bastará ejecutar el comando atrm con el parámetro 3 y se eliminará de la cola de tareas a realizar:

    morenoperezjc@morenoperezjc-K53SD:~$ atrm 3
    morenoperezjc@morenoperezjc-K53SD:~$

    Para verificar que se ha borrado la tarea, nuevamente se vuelve a ejecutar el comando atq:

    morenoperezjc@morenoperezjc-K53SD:~$ atq
    morenoperezjc@morenoperezjc-K53SD:~$

    Se puede observar cómo la tarea 3 ha desaparecido de la cola de tareas a realizar.

    Si queremos conocer en profundidad cómo funciona la orden at, la ayuda o man nos puede ser de utilidad:

    $ man at
    AT(1) AT(1)

    NAME
    at, batch, atq, atrm – queue, examine or delete jobs for later execu‐
    tion

    SYNOPSIS
    ……..

    Ficheros y permisos

    Existen dos ficheros que permiten regular la utilización del comando at y son los siguientes:

  • /etc/at.allow – De existir este fichero, solamente los usuarios contenidos en él podrán ejecutar at.
  • /etc/at.deny – De existir este fichero, los usuarios listados en él no podrán ejecutar los comandos at, atrm, y atq.
  • En el caso de que ambos ficheros no existan, solamente root podrá ejecutar el comando at. No obstante, en Ubuntu por defecto el fichero /etc/at.deny existe y contiene una serie de usuarios utilizados por demonios y procesos que obviamente no tiene porque lanzar comandos at. No son usuarios normales del sistema.

    Sintaxis de utilización

    El formato de utilización es el siguiente:

    $at HH[:]MM[am|pm] [Mes día]

    A esta hora se le puede añadir un número seguido de su unidad (minutes, hours, days o weeks)

    $ at 1830 Feb 15 + 3 days (ejecutar a las 6 y media el 18 de febrero)

    También se pueden utilizar valores relativos como now, midnight, noon, teatime, today o tomorrow.

    $ at 11am tomorrow (ejecutar mañana a las 11 am)

    o

    $ at now (ejecutar ahora mismo)

    También se puede dejar un script en ejecución con el siguiente formato de comando:

    $at now + 5 min < backup.sh (dejar pendiente de ejecución el script backup.sh para dentro de 5 minutos)

    Ejercicios:

    1 Deja programada una tarea para dentro de 5 minutos que elimine de un directorio todos los ficheros con extensión tmp.

    2 Deja programada una tarea con at a las 14:20 de hoy para que elimine los ficheros del directorio descargas de tu sistema.

    3 Impide que tu usuario pueda ejecutar tareas programadas con at utilizando el fichero deny y prueba a programar una tarea cualquiera. Verifica que el sistema le impide dejar programada una tarea.

    Deja un comentario

    Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

    Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>