Devi eseguire un comando solo una volta stasera, domattina o dopo una finestra di manutenzione? at evita di creare una riga cron che poi dimenticherai. Tuttavia, ha una condizione: il servizio atd deve essere attivo e il comando verrà eseguito da /bin/sh, non necessariamente dal tuo shell interattivo.
Il metodo sottostante permette di pianificare, controllare e poi rimuovere un job prima della sua esecuzione. Usa un percorso assoluto per gli script e i file di log. Un job at non beneficia del tuo terminale né delle tue impostazioni di Bash.

Installare at e verificare il servizio
Su Debian, Ubuntu e le loro derivate, installa il pacchetto e poi attiva il demone. Su Fedora, RHEL o Rocky Linux, sostituisci apt con dnf.
sudo apt update
sudo apt install at
sudo systemctl enable --now atd
systemctl status atd --no-pager
Lo stato deve indicare active (running). Se il tuo account riceve un rifiuto, controlla /etc/at.allow e /etc/at.deny. Questi file determinano quali utenti hanno il diritto di inviare attività.
Pianificare un comando senza lasciare un cron
Per testare senza toccare il sistema, crea un piccolo file nella tua cartella personale tra cinque minuti. Digita il comando e poi termina l’input con Ctrl + D.
at now + 5 minutes
mkdir -p "$HOME/at-test"
date > "$HOME/at-test/executed-at.txt"
# poi premi Ctrl+D
Per un intervento reale, evita i percorsi relativi. Il seguente job riavvia un servizio domani alle 02:30 e conserva stdout e stderr in un log noto:
at 02:30 tomorrow
/usr/bin/systemctl restart mon-service.service >> /var/log/mon-service-at.log 2>&1
# poi premi Ctrl+D
Non pianificare un riavvio o una modifica remota senza aver verificato il comando manualmente. Se lavori in SSH, mantieni una seconda sessione aperta prima di un cambiamento che potrebbe interrompere la rete o il servizio.
Rivedere il job e controllare l’ora della macchina
atq mostra i job in attesa con il loro identificativo. at -c consente di vedere lo script effettivamente registrato. Questa lettura è utile quando una variabile, una directory corrente o una redirezione contano per il tuo comando.
atq
at -c 7
timedatectl status
Sostituisci 7 con il numero visualizzato da atq. Controlla anche il fuso orario con timedatectl status. La data inserita in at è interpretata dalla macchina che esegue il demone. Un server impostato su UTC non avvierà necessariamente il job all’orario visualizzato sul tuo terminale.
Annulla un job prima della sua esecuzione
La cancellazione è immediata. Prendi l’identificativo, rimuovi il job e poi rilancia atq per confermare che sia scomparso.
atrm 7
atq
Usa at per un’azione puntuale: una purga dopo la migrazione, un riavvio unico o un test posticipato. Per un’attività ripetuta, tieni piuttosto cron e crontab o un timer systemd. Eviterai soprattutto di trasformare un comando previsto una sola volta in un’automazione dimenticata.