Il tool Cron trattato nei precedenti post consente l’esecuzione di script, comandi e proceduri ad intervalli di tempo regolari per mezzo del daemon crond e di un proprio file di configurazione.
Diversamente da esso, il tool At,  consente anche di eseguire operazioni pianificate dei job ma impostando tali operazioni direttamente dalla shell piuttosto che utilizzare un file di configurazione.

NB: At è da preferire per lo scheduling di quelle operazioni che si vogliono abilitare direttamente da shell. A differenza di cron, le operazioni eseguite e pianificate con At saranno perse al reboot.

Sintassi del comando:**

**

Digitando il comando at seguito dall’orario o dalla data ci si trova di fronte ad un prompt a cui passare i comandi che si vogliono eseguire :

~$ at 1:10
warning: commands will be executed using /bin/sh
at>

L’orario può essere specificato in formato 24h o am-pm, in quest’ultimo caso va specificato (at 4:00 pm). La data può essere espressa in formato MM/DD/YYYY oppure YYYY-MM-DD . E’ possibile inoltre indicare il nome del mese (jan, feb, etc..) e il giorno tramite il numero (1,2..31) e non indicare l’anno. I seguenti comandi sono equivalenti

at 11/21/2008
at 2008-11-21
at nov 21

E’ possibile utilizzare l’operatore + per indicare un orario relativo secondo lo schema:

+ <numero> <unità di tempo> 

dove l’unità di tempo può essere minutes, hours, days o weeks. Alcuni esempi possono essere:

at 22:30 + 2 days - il comando sarà eseguito fra due giorni alle 22 e 30

Una volta inseriti i comandi da eseguire, per uscire dal prompt di at si usa la combinazioni di tasti: ctrl+d che ci restituirà come output:

at> <EOT>
job 5 at Sun Mar  1 01:10:00 2009

La lista dei job impostati può essere visualizzata digitando il comando atq o anche con at -l:

~$ atq                                                                  
6    Sun Mar  1 01:20:00 2009 ax ax

Si può poi decidere di rimuovere il job tramite atrm seguito dal numero corrispondente.

NB: Ovviamente i risultati di questi comandi si riferiscono ai job (o tasks) relativi all’utente con il quale si è loggati.

La sintassi di at comprende anche dei parametri informali con i quali è possibile configurare un job in modo amichevole esempio :

~$ at teatime
at> echo “è ora del thè”
at> <EOT>

Restituirà come output “è ora del thè” alle 4 del pomeriggio. I parametri di questo tipo sono:

teatime = alle 16
now = esegue il comando immediatamente
noon = 12 am
midnight = 24 o 12 pm
today, tomorrow = oggi e domani

NB: Se si avvia at indicando un orario già passato, il comando verrà eseguito immediatamente. Stessa cosa accade se il sistema è spento nel momento in cui avrebbe dovuto eseguire un job di at; al riavvio verrà eseguito immediatamente.

NB: Il sistema di autorizzazioni per l’esecuzione dei job per gli utenti del sistema è simile a quello di cron, sono presenti infatti due file at.deny e at.allow con la liste degli utenti abilitati o meno. **

Esempi di uso comune:

  1. Eseguire uno script ad un orario prefissato:
~# at 1:50
at> /sbin/script.sh
at> [Ctrl]+[D]
  1. Eseguire uno script e/o un comando al trascorrere di 1 minuto:
~# at now +1min
at> shutdown -h now
at> [Ctrl] +[D]
  1. Esempio scritto in maniera differente “con identico risultato” mostra come eseguire uno script e/o comando alle 16:00 di dopo domani:
~# at 4pm +2 days

e/o

~# at 16:00 08/12/2004
at> echo -n "esecuzione script in corso..."
at> sh /home/ax/script.sh
at> echo  "script eseguito."

# End