Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Processi Linux: at

Eseguire processi Linux a orari pianificati adoperando il comando "at".
Eseguire processi Linux a orari pianificati adoperando il comando "at".
Link copiato negli appunti

Una delle attività che si rivela fondamentale in qualsiasi contesto per cui sia necessario amministrare un sistema Linux verte sull'automatizzazione di processi da eseguire a intervalli di tempo. Questi intervalli possono essere noti a priori, decidendone l'orario preciso o la quantità di tempo che deve passare prima del lancio, oppure periodici o addirittura vincolati a un evento particolare come la fine del boot o l'inserimento di un'unità esterna. Nel primo caso torneranno utili at, nel secondo crontab mentre nell'ultimo anacron.
Il comando at sarà trattato in questa lezione, gli altri due in quelle immediatamente a seguire.

Inserire in coda un job at

Il comando at è di semplicissima comprensione ma indubitabilmente versatile e prezioso in molte occasioni.
Si presenta come un eseguibile a cui passiamo argomenti per ottenerne il prompt che riceverà i nostri comandi, l'argomento principale è un riferimento temporale. Adoperando l'opzione -q è possibile specificare anche code che che saranno eseguite con un diverso valore di niceness. Per maggiori dettagli è possibile consultare man at. Un chiarimento su cosa siano i valori di nice potrete trovarlo qui.
Andiamo a presentare l'utilizzo generale di at.

fprincipe@html52:~$ at now +2 minute
warning: commands will be executed using /bin/sh
at> touch createfile
at> 
job 3 at Thu Dec 20 19:56:00 2018

Osserviamo l'esempio. Quale punto di riferimento temporale scegliamo now, ovvero il momento attuale, e specifichiamo che intendiamo eseguire i comandi che inseriremo fra due minuti. Per far ciò specifichiamo dopo il segno di somma "2 minutes". Gli operatori utilizzabili sono parecchi, nella versione più diffusa occorre inserirli in inglese e vengono accettati sia al singolare che al plurale. Considerato che l'intenzione è quella di creare una interfaccia che accetti il linguaggio naturale l'approccio migliore è tentare di digitare ciò che abbiamo in mente e vedere cosa succede. Se otterremo come risposta Garbled time vorrà dire che l'interprete non è stato in grado di comprendere la richiesta. L'interprete indicherà anche il punto in cui si è arrestato dopo "syntax error. Last token seen". Parole come minute, hour, day, week, month, year sono accettate.
Se tutto scorre liscio potremo inserire una sequenza di comandi che sarà passata alla shell di riferimento riga per riga. Termineremo e inseriremo in coda la lista di comandi premendo i due tasti "Ctrl" e "d" contemporaneamente. In risposta vedremo il numero progressivo del job appena inserito.

fprincipe@html52:~$ at 31 dec + 3 seconds
syntax error. Last token seen: s
Garbled time
fprincipe@html52:~$ at 31 dec + 3 minute
warning: commands will be executed using /bin/sh
at> ^C
fprincipe@html52:~$ atq
3	Thu Dec 20 19:56:00 2018 a fprincipe
fprincipe@html52:~$ ls
condivisa  condivisa_on_HTML51D  infiniteloop.sh  long.sh  nohup.out
fprincipe@html52:~$ atq
3	Thu Dec 20 19:56:00 2018 a fprincipe
fprincipe@html52:~$ atq
fprincipe@html52:~$ ls
condivisa             createfile       long.sh
condivisa_on_HTML51D  infiniteloop.sh  nohup.out

Come potete osservare nell'esempio precedente il job numero 3 ha creato il file createfile che prima della sua esecuzione non esisteva. Tentiamo anche di creare un altro job da eseguire dopo 3 secondi a partire dal 31 dicembre. L'interprete si ferma alla "s" quindi "31 dec" è un punto di riferimento accettabile ma la parola seconds non viene gestita correttamente. La stessa richiesta con minutes abilita l'interfaccia che però decidiamo di lasciare vuota di fatto senza inserire alcun nuovo job in lista.

Listare e cancellare job at

Il comando at è integrato da altri due comandi.
Il comando atq lista le sequenze di comandi in coda. Per concludere è bene sapere che possiamo rimuovere una sequenza di comandi dalla lista, ovvero prima che parta, passando il suo identificativo numerico come argomento al comando atrm.

Ti consigliamo anche