Contesto #
at serve per eseguire comandi una sola volta a un orario futuro.
È utile per job differiti, manutenzioni puntuali e script da lanciare fuori orario senza impostare un cron.
Verifica rapida #
Controlla che il servizio sia attivo:
systemctl status atd --no-pagerSe non è in esecuzione:
sudo systemctl enable --now atdSu alcune distro può essere necessario installare prima il pacchetto at.
Eseguire un comando oggi a un’ora precisa #
Scrive l’output in un file alle 18:30:
echo 'date >> /tmp/at-test.log' | at 18:30Conferma attesa:
job <numero_job> at <giorno data ora>Eseguire un job tra 10 minuti #
echo 'tar -czf /tmp/home-backup.tgz /home/<utente>/Documenti' | at now + 10 minutesComodo quando vuoi lanciare un comando dopo aver chiuso sessioni o file aperti.
Pianificare per domani #
echo 'dnf upgrade -y' | at 02:00 tomorrowSu sistemi Debian/Ubuntu sostituisci il comando interno con quello adatto, ad esempio:
echo 'apt update && apt upgrade -y' | at 02:00 tomorrowPassare uno script da file #
Se hai già uno script pronto:
at -f ./backup.sh 23:00Verifica che backup.sh abbia percorsi assoluti o imposti esplicitamente l’ambiente che gli serve.
Accodare più comandi nello stesso job #
at 21:15
echo 'echo "inizio job" >> /tmp/at-job.log'
echo 'rsync -a /srv/data/ /srv/backup/'
echo 'echo "fine job" >> /tmp/at-job.log'
<Ctrl-D>Ctrl-D chiude l’input e invia il job alla coda.
Vedere i job in coda #
atqOppure:
at -lOutput tipico:
12 Fri Apr 17 23:00:00 2026 a alessandroIspezionare il contenuto di un job #
Mostra il comando reale che verra eseguito:
at -c <numero_job>Utile per controllare variabili d’ambiente, directory corrente e script accodato.
Rimuovere un job schedulato #
atrm <numero_job>Alias equivalente:
at -r <numero_job>Eseguire quando il carico si abbassa #
Per job non urgenti:
echo 'updatedb' | batchbatch usa la stessa infrastruttura di at, ma avvia il job quando il carico del sistema lo consente.
Note operative #
atesegue i job con/bin/sh, non con la shell interattiva corrente.- Conviene usare percorsi assoluti come
/usr/bin/rsynce/tmp/file.lognegli script più delicati. - Output standard ed errori possono essere inviati via mail locale se il sistema è configurato per farlo.