Raspberry Pi – CronTab e CronJob –
Il CronTab invece è un file testuale che contiene proprio la lista di comandi che verranno eseguiti da Cron. Si trova in /etc.
Ogni utente sul sistema ha un file crontab. Esiste persino una root crontab per i task che richiedono privilegi amministrativi.
Usare Cron
Per usare Cron, basta aprire il terminale e dare il comando:
crontab -e
si accederà al file che appartiene all’utente che ha dato il comando sul terminale.
Se vogliamo impostare dei task con privilegi amministrativi dovremmo accedere al crontab come utenti root:
sudo crontab -e
Aggiunto un task possiamo salvare il file. Le sezioni che compongono una entry nel crontab sono spiegate di seguito:
Sezioni Crontab
Ognuna di queste “sezioni” è separata da uno spazio, con la sezione finale con uno o più spazi all’interno. Nessuno spazio è permesso all’interno della Sezione 1-5, solo fra di essi. Le sezioni 1-5 vengono usate per indicare quando e quanto spesso si vuole che venga eseguito il comando. Questo è un esempio di cron job:
10 09 1 1 1 /usr/bin/cartella/comando
Con le sezioni rispettivamente a indicare:
MINUTI (0-59)
ORE (0-23, dove 0 sono le 24)
GIORNO (1-31)
MESE (1-12)
GIORNO DELLA SETTIMANA (0-6, dove 0 e’ la domenica)
SINTASSI
minuti (0-59), ore (0-23, 0 = mezzanotte), giorno (1-31), mese (1-12), giorno della settimana (0-6, 0 = domenica), Comando.
L’esempio mostrato sopra in particolare fa in modo che il comando venga eseguito Il 1 Gennaio, più ogni Lunedì di gennaio, alle 9:10 di mattina.
Un ulteriore simbolo (* asterisco) può essere usato in ogni istanza per indicare “ogni”. Ad esempio:
01 06 * * * /usr/bin/cartella/comando
Il comando sopra viene eseguito ogni giorno di ogni mese alle 6:01 di mattina.
Altre impostazioni più sofisticate possono essere generate utilizzando virgole e trattini.
Il comando specificato è sempre meglio includerlo con il percorso completo all’eseguibile. Per conoscere il percorso di un comando è sufficiente nel terminale, digitare prima del comando la parola which ad esempio in questo modo:
which ls
Il cronjob impostato nella crontab inizierà a girare non appena verranno salvate le modifiche alla crontab.
Un altro esempio di cronjob potrebbe essere questo:
*/30 * * * * curl http://roccomusolino.com/directory/update.php
Che fa in modo che ogni 30 minuti venga effettuata una richiesta con curl ad un certo script.
CronTab Avanzata
La crontab vista sopra è una crontab per gli utenti. Ogni crontab è associata ad un utente. Ma ci sono altri tipi di crontab, che fanno uso di stringhe speciali, “abbreviazioni” quali:
@reboot -> Esegui una volta, ad ogni avvio.
@yearly -> Esegui una volta all’anno, equivale a “0 0 1 1 *”.
@annually -> (Uguale a @yearly).
@monthly -> Esegui una volta al mese, “0 0 1 * *”.
@weekly -> Esegui una volta la settimana, “0 0 * * 0”.
@daily -> Esegui una volta al giorno, “0 0 * * *”.
@midnight -> (Uguale a @daily).
@hourly -> Esegui una volta ogni ora, “0 * * * *”.
Ad esempio:
@reboot python /home/pi/MyScript.py &
esegue lo script MyScript.py ogni volta che il sistema si avvia.
Questo vale per qualsiasi sistema Debian-based. Quindi se avete Raspbian su Raspberry Pi, potete automatizzare qualsiasi compito e task in questa maniera.
GRAZIE a https://hackerstribe.com per l’articolo