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.
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:00Dentro 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 tomorrowEjecutar un script con at
Programar la ejecución de un script:
at 01:00En 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 t3rr0rz0n3Eliminar una tarea programada
Si queremos cancelar una tarea, usamos atrm indicando el ID de la cola:
atrm 3Consideraciones 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
atpuede estar restringido mediante/etc/at.allowy/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/LinuxMás sobre ./voidNull
- 📖 Aprende todos sobre los comandos de GNU/Linux en nuestro Diccionario "De la A a la Z: Los comandos de GNU/Linux"
- 💪 ¡Forma parte de la Comunidad de ./voidNull!
- 🤖 Disfruta de todos nuestros Cursos sobre Ansible, Proxmox, Home Assistant entre otros.
- 📩 Mantente actualizado con lo último en GNU/Linux y Software Libre. Recibe nuestra Newsletter mensual.
Comentarios