¿Necesita ejecutar un comando una sola vez esta noche, mañana por la mañana o después de una ventana de mantenimiento? at evita crear una línea cron que luego olvidará. Sin embargo, tiene una restricción: el servicio atd debe estar en funcionamiento, y el comando será ejecutado por /bin/sh, no necesariamente por su shell interactivo.
El método a continuación permite programar, comprobar y luego retirar un trabajo antes de su ejecución. Use una ruta absoluta para los scripts y los archivos de registro. Un trabajo at no se beneficia de su terminal ni de todos sus ajustes de Bash.

Instalar at y verificar el servicio
En Debian, Ubuntu y sus derivadas, instale el paquete y luego active el daemon. En Fedora, RHEL o Rocky Linux, reemplace apt por dnf.
sudo apt update
sudo apt install at
sudo systemctl enable --now atd
systemctl status atd --no-pager
El estado debe indicar active (running). Si su cuenta recibe un rechazo, controle /etc/at.allow y /etc/at.deny. Estos archivos determinan qué usuarios tienen el derecho de enviar tareas.
Programar un comando sin dejar un cron
Para probar sin afectar el sistema, cree un pequeño archivo en su carpeta personal en cinco minutos. Escriba el comando y luego termine la entrada con Ctrl + D.
at now + 5 minutes
mkdir -p "$HOME/at-test"
date > "$HOME/at-test/executed-at.txt"
# luego presione Ctrl+D
Para una intervención real, evite las rutas relativas. El siguiente trabajo reinicia un servicio mañana a las 02:30 y guarda stdout y stderr en un registro conocido:
at 02:30 tomorrow
/usr/bin/systemctl restart mi-servicio.service >> /var/log/mi-servicio-at.log 2>&1
# luego presione Ctrl+D
No programe un reinicio o un cambio remoto sin haber comprobado el comando manualmente. Si trabaja por SSH, mantenga una segunda sesión abierta antes de un cambio que pueda interrumpir la red o el servicio.
Revisar el trabajo y controlar la hora de la máquina
atq muestra los trabajos en espera con su identificador. at -c permite ver el script realmente registrado. Esta lectura es útil cuando una variable, un directorio actual o una redirección cuenta para su comando.
atq
at -c 7
timedatectl status
Reemplace 7 por el número mostrado por atq. Verifique también la zona horaria con timedatectl status. La fecha ingresada en at es interpretada por la máquina que ejecuta el demonio. Un servidor configurado en UTC no necesariamente ejecutará el trabajo a la hora mostrada en su puesto.
Cancelar un trabajo antes de su ejecución
La eliminación es inmediata. Recupere el identificador, retire el trabajo y luego ejecute atq para confirmar que ha desaparecido.
atrm 7
atq
Utilice at para una acción puntual: una purga después de una migración, un reinicio único o una prueba diferida. Para una tarea repetida, prefiera cron y crontab o un temporizador systemd. Así evitará sobre todo transformar un comando programado una vez en una automatización olvidada.