Per automatizzare processi e task nei sistemi Unix-like è possibile sfruttare crontab, tale tool consente la pianificazione di comandi che possono essere poi mandati in esecuzione periodicamente in maniera automatica dal sistema stesso. La piattaforma andrà poi a leggere questi comandi dal file chiamato crontab.
Schedulare dei comandi non è un'operazione complessa, ma ovviamente è necessario conoscere la sintassi di cron e, per gli utenti meno esperti, non è facilissimo ricordare tutti i dettagli. Può quindi essere utile una soluzione come crontab guru, un editor semplice e veloce per definire cronjob. Tramite la sua interfaccia è possibile stabilire l'arco temporale in cui programmare comandi ed istruzioni.
Un file crontab contiene le istruzioni per il demone cron (8)
, ad esempio: "esegui questo comando in questo momento in questa data". Ogni utente può definire il proprio crontab ed i comandi vengono eseguiti sotto l'utente che possiede quel particolare crontab. All'interno del file crontab possono essere presenti righe vuote, spazi iniziali e schede, tali elementi vengono di fatto ignorati dal sistema nel momento in cui c'è da eseguire o programmare il comando.
Il team di sviluppatori di crontab guru ha pubblicato inoltre vari suggerimenti per scrivere cronjob efficaci:
- se la parte del giorno del mese o del giorno della settimana inizia con un
*
questi formano un'intersezione, altrimenti un'unione. Se scriviamo ad esempio* * 3 * 1
il comando verrò eseguito il 3 ° giorno del mese e il lunedì (unione), mentre se scriviamo* * * / 2 * 1
il comando verrà eseguito ogni secondo giorno del mese solo se è anche un lunedì (intersezione). - È sempre meglio eseguire i processi cron impostando il sistema col fuso orario UTC, perché se si utilizza un fuso orario come ad esempio PST, GMT e PDT, una volta all'anno (al cambio di ora legale) molti cronjob programmati andranno semplicemente "perduti".
- Non utilizzate mai la funzione
@reboot
a causa di alcuni bug. - Programmazioni più complesse possono essere realizzate combinando più espressioni cron. Ad esempio: se è necessario eseguire il comando X ogni 90 minuti, è anche possibile creare una voce crontab che esegua X ogni 3 ore (
0 * / 3 * * *
) e una seconda voce che esegua X ogni 3 ore con un offset (30 1/3 * * *
).
Dunque per esempio un cronjob è formato da: minuti, ore, giorno, mese, settimana e dal comando che desideriamo programmare:
8 8 8 8 * /home/progetto/cron.js
avremo
Dunque alle 08:08 dell'otto agosto verrà eseguito lo script JavaScript presente nella directory indicata. Come possiamo notare la sintassi di cron è abbastanza semplice e una volta padroneggiata verrà automatico implementarla nei nostri script, tuttavia chi magari va di fretta o chi non è molto esperto troverà in crontab guru uno strumento davvero utile per impostare lo spazio temporale corretto per eseguire il comando desiderato.
Via crontab.guru