Permite programar la ejecución de comandos en GNU/Linux para un momento concreto del futuro, ejecutándose una sola vez sin necesidad de usar cron.


En sistemas GNU/Linux, la automatización de tareas es una parte fundamental de la administración y el uso avanzado del sistema. Aunque herramientas como cron son ampliamente conocidas para ejecutar tareas periódicas, existen situaciones en las que solo necesitamos ejecutar un comando una única vez en un momento concreto del futuro.

Para este tipo de escenarios, GNU/Linux proporciona el comando at, una utilidad sencilla pero muy potente que permite programar tareas diferidas sin necesidad de crear scripts complejos ni editar archivos de configuración permanentes.

¿Para qué se usa el comando at?

El comando at se utiliza para programar la ejecución de uno o varios comandos en una fecha y hora específicas, ejecutándose una sola vez.

Es especialmente útil para:

  • Ejecutar tareas puntuales sin repetirlas.
  • Programar apagados o reinicios diferidos.
  • Lanzar scripts en horarios concretos.
  • Ejecutar comandos cuando no vamos a estar presentes.
  • Automatizaciones simples que no justifican el uso de cron.

A diferencia de cron, las tareas programadas con at no son recurrentes y se eliminan automáticamente tras ejecutarse.

💡
Para usar at, el servicio atd debe estar instalado y en ejecución.

Sintaxis básica del comando at

La sintaxis general de at es la siguiente:

at [opciones] hora [fecha]

Al ejecutar el comando, se abre un prompt interactivo donde se introducen los comandos que se desean ejecutar. Para finalizar la entrada, se usa Ctrl + D.

Ejemplo del prompt interactivo:

at> comando1
at> comando2
at> <Ctrl+D>

Ejemplos de uso del comando at

A continuación os dejamos algunos ejemplos interesantes del comando con algunas de sus funcionalidades.

Ejecutar un comando a una hora concreta

Programar un comando para las 22:00 del día actual:

at 22:00

Dentro del prompt interactivo:

at> echo "Hola desde at" >> /tmp/at.log
at> <Ctrl+D>

Ejecuta un comando en una fecha específica

Programar una tarea para el 25 de enero a las 03:30:

at 03:30 01/25

Usar expresiones temporales relativas

at permite usar expresiones en lenguaje natural, muy útiles en el día a día.

Ejecutar un comando dentro de 10 minutos:

at now + 10 minutes

Ejecutar una tarea dentro de 2 horas:

at now + 2 hours

Ejecutar un comando mañana a las 8 de la mañana:

at 8:00 tomorrow

Ejecutar un script con at

Programar la ejecución de un script:

at 01:00

En modo interactivo:

at> /home/t3rr0rz0n3/scripts/backup.sh
at> <Ctrl+D>

Ver las tareas programadas

Para listar las tareas pendientes del usuario actual:

atq

La salida mostrará algo similar a:

3 Wed Jan 24 01:00:00 2026 a t3rr0rz0n3

Eliminar una tarea programada

Si queremos cancelar una tarea, usamos atrm indicando el ID de la cola:

atrm 3

Consideraciones importantes

  • Las tareas se ejecutan con el entorno del usuario que las crea, pero con variables mínimas.
  • Es recomendable usar rutas absolutas en los comandos.
  • La salida estándar y de error se envía por correo local al usuario si el sistema tiene MTA configurado.
  • El acceso a at puede estar restringido mediante /etc/at.allow y /etc/at.deny.

Conclusión

El comando at es una herramienta ideal para automatizaciones puntuales en GNU/Linux, ofreciendo una alternativa sencilla y directa a cron cuando no se necesitan tareas recurrentes. Su sintaxis clara, soporte para expresiones temporales y facilidad de uso lo convierten en un aliado imprescindible para administradores de sistemas y usuarios avanzados.

Si necesitas ejecutar algo una sola vez y en el momento justo, at es exactamente lo que estás buscando.

¿Buscas otro comando?

¡Revisa nuestro "Diccionario de comandos para GNU/Linux"!

Diccionario de comandos para GNU/Linux

Más sobre ./voidNull

Haz que cada palabra cuente: tu donación nos inspira a seguir creando contenido. Accede al apartado de Donación para hacer tu aportación