Come usare Crontab
Vi è mai capitato di dover effettuare un'operazione sul vostro pc/server ogni tot tempo, tipo ogni ora, giorno, settimana, mese o anno, o anche composizioni di essi?
Bene su tutti i sistemi UnixLike ci viene in aiuto il demone Crontab .
Qui spieghiamo come funziona e faremo un esempio di come configurarlo.
-----------------------------------------
Ogni linea di un file crontab segue un formato particolare, composta da una serie di campi separati da spazi o tabulazioni. I campi possono avere un solo valore o una serie di valori.
Operatori
Esistono diversi modi per specificare valori multipli in un campo:
- L'operatore virgola («,») specifica una lista di valori, ad esempio: «1,3,4,7,8».
- L'operatore trattino («-») specifica un intervallo di valori, ad esempio: «1-6», che equivale a «1,2,3,4,5,6».
- L'operatore asterisco («*») specifica tutti i possibili valori di un campo. Ad esempio, un asterisco nel campo dell'ora è equivalente a «ogni ora».
Esiste anche un operatore supportato da alcune versioni estese del cron
, l'operatore sbarra («/»), che può essere usato per saltare un certo numero di valori. Ad esempio, «*/3» nel campo dell'ora equivale a «0,3,6,9,12,15,18,21»; l'operatore «*» specifica «ogni ora», ma il «/3» indica che solo il primo, quarto, settimo e così via dei valori restituiti da «*» vengano usati.
Campi
I primi cinque campi su ogni riga specificano con che frequenza e quando eseguire un comando.
.---------------- [m]inute: minuto (0 - 59)
| .------------- [h]our: ora (0 - 23)
| | .---------- [d]ay [o]f [m]onth: giorno del mese (1 - 31)
| | | .------- [mon]th: mese (1 - 12) OPPURE jan,feb,mar,apr...
| | | | .---- [d]ay [o]f [w]eek: giorno della settimana (0 - 6)
| | | | |
* * * * * comando da eseguire
Note:
- Per «giorno della settimana» (5º campo), sia 0 che 7 sono considerati il valore domenica.
- Se sia «giorno del mese» (3º campo) che «giorno della settimana» (5º campo) sono presenti sulla stessa linea, il comando viene eseguito quando almeno uno dei due è vero.
Il sesto campo e i successivi (ossia, il resto della linea) specificano il comando da eseguire.
ESEMPIO1 Mettiamo caso che abbiamo un webserver e vogliamo creare un backup della directory del webserver ogni settimana allora scriveremo
0 0 * * 0 cp -R /Root_Dir_Sito/ /Directory_Che_vogliamo_noi/
Questo farà si che ogni domenica alle 00.00 (Mezzanotte), farà una copia di backup della root del nostro sito in una directory da noi scelta
ESEMPIO2Mettiamo caso di avere il nostro solito sito web, ma questa volta vorremo effettuare il backup del nostro database, la sintassi del comando sarà:
0 0 * * 0 mysqldump -uUser -pPassword Database > file.sql
Questo scaturirà un dump del nostro Database ogni mezzanotte di tutte le domeniche