Salta al contenuto principale

at: guida rapida con esempi pronti all'uso

·374 parole·2 minuti
❯ lineadicomando.it
Autore
❯ lineadicomando.it
Specs, Bugs and Log Console

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-pager

Se non è in esecuzione:

sudo systemctl enable --now atd

Su 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:30

Conferma 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 minutes

Comodo quando vuoi lanciare un comando dopo aver chiuso sessioni o file aperti.


Pianificare per domani
#

echo 'dnf upgrade -y' | at 02:00 tomorrow

Su sistemi Debian/Ubuntu sostituisci il comando interno con quello adatto, ad esempio:

echo 'apt update && apt upgrade -y' | at 02:00 tomorrow

Passare uno script da file
#

Se hai già uno script pronto:

at -f ./backup.sh 23:00

Verifica 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
#

atq

Oppure:

at -l

Output tipico:

12  Fri Apr 17 23:00:00 2026 a alessandro

Ispezionare 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' | batch

batch usa la stessa infrastruttura di at, ma avvia il job quando il carico del sistema lo consente.


Note operative
#

  • at esegue i job con /bin/sh, non con la shell interattiva corrente.
  • Conviene usare percorsi assoluti come /usr/bin/rsync e /tmp/file.log negli script più delicati.
  • Output standard ed errori possono essere inviati via mail locale se il sistema è configurato per farlo.

Riferimenti
#