
cron vs at, eseguire script a tempo su Raspberry Pi

Francesco Cozzi
Per permetterti di interagire con me e con i contenuti del mio sito raccolgo dei dati tramite cookie, <br>ti invito a leggere ed accettare come tratto i tuoi dati per continuare a garantire la libertà della Rete.<br> Privacy Policy
Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo.
L’utilità principe della Raspberry Pi è quella di poter sfruttare i contatti GPIO per eseguire delle operazioni, sia di natura analogica sia digitale.
[AMAZONPRODUCTS asin=”B00T2U7R7I”] [AMAZONPRODUCTS asin=”B006DXC91Q”]
Questo presuppone di dover compilare del software che si occupi di far dialogare l’hardware della scheda lampone con il suo sistema operativo debian-based. A tale scopo semplici script scritti in linguaggio Python possono assolvere a tale incarico, supportati anche da un vasto bacino di librerie di supporto all’hardware dedicato per Raspberry Pi.
Un percorso comune quando si ha a che fare con schede programmabili per compiere delle operazioni, che siano micro controllori come Arduino, o micro processori come Raspberry Pi, per citare i più famosi, è stabilire una routine temporale entro cui quella operazione si dovrà compiere o ripetere.
In quest’ottica un approccio, fortemente centralizzato su sistema operativo Debian, relega la configurazione di una routine al solo comando cron. Ne ho già fornito un esempio in un articolo precedente riguardante la lettura di Temperatura e Umidità da un sensore DHT-11 con Raspberry Pi.
Spiegare come funziona il comando cron sarebbe molto dispersivo e richiederebbe un approfondimento piuttosto lungo.
Ma tagliamo la testa al toro e navighiamo sul sito http://www.corntab.com/pages/crontab-gui dove potremo trovare un’efficacissima interfaccia visuale per generare il nostro script cron. Con la RaspBerry Pi poi il gioco è semplice perchè il file crontab che contiene la lista di tutti i processi automatizzati del nostro utente si può richiamare ed editare semplicemente con il comando:
Modificando il file con editor di testo, magari avendo prima fatto l’accesso come amministratore da terminale (comando su o sudo), potremo inserire la stringa riguardante il processo che vogliamo impostare copiandola dall’interfaccia visuale prima linkata.
Dopo le modifiche e salvataggio, bisogna riavviare per far partire il timer di cron.
Un puro parere personale dovete concedermelo, cron a me proprio non piace. È uno strumento decisamente potente e altamente configurabile, ma non immediato, inoltre bisogna sempre essere attenti ad apportare le modifiche come amministratori. Un utente alle prime armi potrebbe di sicuro cadere nella disperazione difronte ad uno script finalmente funzionante ma una mission impossible da far cronicizzare da cron.
In soccorso ci viene un approccio molto più old style direttamente dagli albori della command-line unix, ovvero il comando at.
Installiamolo da terminale con:
Vediamo qualche dettaglio:
con questo comando stiamo indicando che alle 23.30 dobbiamo far eseguire un comando e con -m richiediamo una mail di conferma a processo terminato.
Successivamente si apre il prompt interno at> e dobbiamo ora inserire il comando da eseguire, per esempio:
stiamo chiedendo di eseguire un brano musicale mp3, successivamente con Ctrl+D ci viene restituito il numero del job e data/ora.
Alternativamente possiamo eseguire direttamente tale comando:
con -f che introduce il percorso del file da eseguire alle 23.32, in output otteniamo direttamente il numero di job e data/ora.
Con il comando:
otteniamo l’elenco dei processi impostati, possiamo rimuovere il job 2 con il comando:
Il formato dell’ora può anche essere quello inglese (AM/PM), i giorni possiamo indicarli come MMDDYY o MM/DD/YY o DD.MM.YY.
Per indicare un processo che si deve ripetere più di una volta dovremo aggiungere all’ora della prima esecuzione il periodo che deve intercorrere fino alla prossima esecuzione, per esempio:
ovvero esecuzione alle 4 di pomeriggio dopo tre giorni.
Ho riassunto molto tralasciando applicazioni più specifiche prediligendo una visione di insieme più generica. Le funzionalità tra i due comandi (cron e at) differiscono nella sostanza secondo me, infatti se dovessimo eseguire una routine sistematica con continuità preferirei usare cron, per una esecuzione programmata unica invece preferirei at per l’immediatezza dei comandi.
Per dubbi, approfondimenti, correzzioni…lasciatemi pure un commento.
Fonte: http://www.brunolinux.com/02-The_Terminal/The_at_Command.html