at

De Wikiunix

Las órdenes at, atq, atrn, batch sirven para programar tareas de modo que el sistema operativo las realice en en el futuro.

La programación de tareas es una herramienta muy importante para la administración de sistemas. Permite, a un buen administrador, realizar tareas de administración de un sistema sin tener que estar presente. Además descarga de trabajo, pues el administrador puede estar seguro de que determinadas acciones que deben ejecutarse en un momento determinado del tiempo lo harán, sin tener que usar agendas o alarmas para recordarle al que las ponga en marcha.

Contenido

El comando at

Depende del demonio atd para su funcionamiento. Para activarlo hay que ejecutar como administrador:
/etc/init.d/atd start
Mediante en comando at se pueden programar tareas (sin borrar las anteriormente programadas). Su sintaxis es la siguiente:
at [-f <fichero>] <momento>

El momento en que se ejecutará la orden se puede especificar de varias formas. Para las horas se puede usar los siguientes formatos:

  • HH: a la hora en punto indicada.
  • HH:MM: en la hora y minutos especificados del día actual (o, si ya ha pasado, del día siguiente).
  • midnight: medianoche.
  • noon: mediodía.
  • teatime: las cuatro de la tarde.
  • HH:MMam: equivalente a HH:MM
  • HH:MMpm: a la hora indicada de la tarde.
Ejemplo que ejecuta un script que para un servicio a las ocho y media de la tarde:
at -f script-parada 20:30

En caso de que no queramos programar para el día actual se puede especificar una fecha seguida de una hora en cualquiera de los formatos anteriores. Las formas de especificar fechas son:

  • MMDDYY: mes, día y año.
  • MM/DD/YY: mes, día y año con dos cifras.
  • DD.MM.YY: día mes y año.
  • today: hoy.
  • tomorrow: mañana.
Ejemplo que programa la ejecución de un script para el 30 de octubre de 2027 a las diez de la mañana:
at -f script-activacion 10:00 30.10.27

También se pueden sumar tiempos, indicando las unidades, que pueden ser:

  • minutes: minutos.
  • hours: horas.
  • days: días.
  • weeks: semanas.

Para ver todas las especificaciones soportadas: /usr/share/doc/packages/at/timespec

Por ejemplo, para programar una ejecución dentro de cuatro días a las once y media de la mañana:
at -f script-migracion 11:30 + 4 days

Si no se proporciona un fichero de órdenes con la opción -f', se lee de la entrada estándard (CTRL-D para terminar).

Por ejemplo, para recordar felicitar a un amigo:
at 29.06.06 10:00

at> xmessage ``Felicitar a Quino -center

CTRL-D

El trabajo programado con at se ejecuta con la shell y el directorio activo donde se creó.

Si se desea ejecutar una aplicación gráfica hay que indicarle el servidor X a at. Por ejemplo, para lanzar un lector de ficheros postcript habría que indicar DISPLAY=0.0 kghostview.

Listado de programaciones de at

Para visualizar las tareas programadas se usa
atq
o
at -l

Este comando muestra una línea por cada tarea, comenzando por un número, que es el identificador de tarea. A continuación aparece la hora y fecha de ejecución, el tipo de tarea y la tarea en sí.

Para borrar una programación se usa atrm seguido de uno a más números de tarea a eliminar. También se puede usar at con las opciones -d ó -r.

Ejecución con carga del sistema baja con batch

La orden batch permite programar un trabajo para que se ejecute cuando la carga de la CPU del sistema no sea alta (por defecto 0.8, pero se puede configurar con atrun). Su sintaxis es la siguiente:
batch [-f <fichero>] [<momento>]

Las órdenes a ejecutar se pueden proporcionar en un fichero o por la entrada estándard y el momento a partir del cual puede ejecutarse la orden se indica de igual modo que en at (si no se proporciona se supone que se ahora).

Acceso a at y batch

Para controlar el uso de at están los ficheros /etc/at.allow y /etc/at.deny. Su funcionamiento es similar al comando cron: si existe at.allow los usuarios listados son los únicos que pueden usarlo. Si no existe at.allow pero sí at.deny, los listados son los que no pueden usarlo. Y si no existen ninguno depende del sistema (aunque sólo se suele permitir acceso al superusuario).

Hay que remarcar que los ficheros at.allow y at.deny también controlan el acceso al comando batch (porque internamente usa at).

Herramientas personales