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 obligatorios están marcados con *

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.