Programación de una sola ejecución con at

LinuxBeginner
Practicar Ahora

Introducción

Aunque cron es ideal para trabajos recurrentes, como los diarios o los horarios, a veces necesita programar una tarea para que se ejecute una sola vez a una hora concreta en el futuro. Por ejemplo, puede que quiera reiniciar un servicio esta noche a las 2:00 o tomar una instantánea de una base de datos dentro de 30 minutos.

Para estas tareas puntuales, Linux proporciona la utilidad at.

El comando at lee comandos desde la entrada estándar o desde un archivo y los ejecuta más adelante. Resulta útil cuando la tarea debe retrasarse, pero no repetirse, a diferencia del modelo de programación periódica de cron.

Por tanto, la diferencia conceptual principal es sencilla: cron define programaciones repetitivas, mientras que at pone en cola un trabajo que se ejecutará una sola vez en el futuro. Ambas son herramientas de automatización, pero resuelven problemas de temporización diferentes.

En este laboratorio aprenderá a:

  1. Instalar los requisitos previos: Asegurarse de que la utilidad at y su daemon estén instalados y en ejecución.
  2. Programar un trabajo: Usar at para poner un comando en cola y ejecutarlo más adelante.
  3. Inspeccionar la cola: Usar atq para mostrar los trabajos pendientes.
  4. Administrar trabajos: Usar atrm para eliminar un trabajo de la cola.

Instalar la utilidad at

El comando at no siempre está instalado de forma predeterminada en todas las distribuciones de Linux. Primero debe comprobar que está disponible y que su servicio en segundo plano está en ejecución.

Al igual que cron, at depende de un daemon. El comando que escribe crea la definición de un trabajo en cola, y el servicio en segundo plano se encarga de ejecutar ese trabajo más adelante.

  1. Instale el paquete:
sudo apt-get install -y at
  1. El sistema at utiliza un daemon en segundo plano llamado atd para ejecutar los comandos programados. Inicie el servicio:
sudo service atd start
  1. Compruebe que el servicio está activo:
sudo service atd status

Debería ver una salida que indique que atd está en ejecución.

Programar un trabajo

Ahora que el sistema está preparado, compruebe que at funciona programando una tarea sencilla que cree un archivo dentro de 5 minutos.

Para empezar, ejecute el comando at seguido de la hora deseada:

at now + 5 minutes

El prompt cambiará a at>, lo que indica que está esperando su entrada. Escriba el comando que desea ejecutar:

Esta interfaz es diferente de la de cron porque at recopila de forma interactiva el texto del comando del trabajo futuro. En la práctica, está escribiendo el contenido de una tarea de una sola ejecución y enviándolo a la cola.

echo "Hello LabEx" > /home/labex/project/hello.txt

Para guardar y salir:

  • Pulse Ctrl + D.

Debería ver <EOT> (End of Transmission) y un mensaje de confirmación similar a job 1 at ....

Esto confirma que el trabajo se ha enviado a la cola.

Mostrar los trabajos pendientes (atq)

Después de programar un trabajo, puede que quiera comprobar que está en la cola o consultar su ID de trabajo.

El comando para mostrar la cola es atq:

atq

El formato de salida suele ser similar a: 1 Mon Oct 23 10:05:00 2023 a labex

Desglose:

  • 1: El ID del trabajo. Necesita este número para eliminarlo.
  • Fecha y hora: El momento en que está programada la ejecución del trabajo.
  • Usuario: El usuario propietario del trabajo.

La vista de la cola es importante porque es fácil olvidar los trabajos programados una vez enviados. atq le permite inspeccionar las tareas pendientes antes de que se ejecuten.

Si la cola está vacía, es posible que el trabajo ya se haya ejecutado o que no se haya podido enviar.

Cancelar un trabajo (atrm)

Si cambia de opinión o se da cuenta de que ha cometido un error, puede eliminar un trabajo de la cola antes de que se ejecute.

Use el comando atrm seguido del ID del trabajo.

Primero, compruebe el ID del trabajo mediante atq (probablemente era 1 en el paso anterior). Después, ejecute:

atrm 1

Ahora compruebe que la cola está vacía:

atq

La salida no debería mostrar nada. Esto confirma que el trabajo se ha cancelado. No se creará ningún archivo.

Este paso de cancelación refuerza que los trabajos en cola son objetos administrables, no simples comandos que se ejecutan sin posibilidad de control. Puede inspeccionarlos, identificarlos mediante su ID y eliminarlos antes de la ejecución si cambia de plan.

Resumen

En este laboratorio aprendió a administrar tareas de una sola ejecución:

  1. Instalación: Configurar at y atd.
  2. Programación (at): Usar una sintaxis como at now + 5 minutes para poner comandos futuros en cola.
  3. Consulta (atq): Inspeccionar la cola para ver los ID de los trabajos pendientes y sus horas de ejecución.
  4. Eliminación (atrm): Borrar trabajos concretos de la cola mediante su ID.

Use cron para las programaciones recurrentes y at para las ejecuciones únicas y retrasadas.