7.9.5.- Uso de at

El comando at permite ejecutar un único comando en un momento específico del futuro una sola vez en lugar de hacerlo regularmente, supone un despliegue menor que cronanacron. Normalmente, recibe una única opción (aunque también se puede ajustar este comportamiento): una hora. Esta hora puede adoptar varias formas:

  • Una hora del día: podemos especificar la hora del día como HH:MM seguida opcionalmente por AM o PM si utilizamos un formato de 12 horas. Si la hora especificada ya ha pasado, la operación se ejecutará al día siguiente.
  • noon (mediodía), midnight (medianoche) o teatime (la hora de té): estas tres palabras se explican por si solas, la hora del té son las 4 PM.
  • Un día específico: podremos planificar una tarea at con más de 24 horas de antelación especificando el día tras la hora del día. Para ello se emplea el siguiente formato MMDDAA, MM/DD/AA o DD.MM.AA. Otra opción sería especificar la fecha como nombre del mes día año.
  • Un periodo futuro especificado: podemos especificar un momento utilizando la palabra clave now (ahora), un signo de la suma (+) y un periodo temporal, como en now + 2 para ejecutar una tarea en 2 horas.

El comando at depende del demonio atd,  si el sistema no lo inicia automáticamente puede que tengamos que configurar un script de inicio SysV para que lo haga. Cuando ejecutemos at y le especifiquemos una hora, el programa responderá con su propio prompt, at>, que trataremos igual que el prompt de bash u otra consola de comandos. Cuando finalicemos, pulsaremos Control+d para abandonar este prompt. Otra opción es pasarle a at un fichero de comandos con el parámetro -f, como en at -f comands.sh  noon, que ejecutará el contenido de comands.sh al medio día.

at posee varias herramientas de soporte, una de ellas es el demonio atd que debe estar iniciado para que at haga su trabajo. Otro programa de soporte es atq, que lista las tareas de at pendientes. atrm elimina una tarea at de la cola y batch que funciona de un modo similar a at pero que ejecuta las tareas cuando el nivel de carga del sistema baja de 0,8. Estas utilidades son muy sencillas, a atq le basta con que le escribamos su nombre. Para utilizar atrm sólo tendremos que pasarle el número de tarea at que devuelve atq.

at permite restricciones similares a las de cron. Los ficheros /etc/at.allow/etc/at.deny funcionan exactamente igual a los ficheros /etc/cron.allow/etc/cron.denyat posee algunas peculiaridades, si no existe ninguno de estos dos ficheros, sólo root puede utilizar atat.allow lista los usuarios que tienen acceso a at, si at.deny existe, entonces tendrán acceso todos los usuarios excepto los recogidos en este fichero.

Esta seguridad más restrictiva hace que el programa rara vez se instale con permisos de ejecución restrictivos, aunque podemos utilizar los permisos del fichero del programa para denegar a los usuarios normales la posibilidad de ejecutar at si queremos una capa adicional de seguridad.