CRONTAB
Il file /etc/crontab ha all’interno dei link a cartelle
# m h dom mon dow user command
17 * * * * root run-parts –report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || run-parts –report /etc/cron.daily
47 6 * * 7 root test -x /usr/sbin/anacron || run-parts –report /etc/cron.weekly
52 6 1 * * root test -x /usr/sbin/anacron || run-parts –report /etc/cron.monthly
per l’esecuzione di comandi a cadenza giornaliera, settimanale, mensileo ad ogni ora.
basta mettere lo script all’interno di una di queste cartelle e cron garantirà che l’esecuzione di quello script sarà effettuata ad un dato orario di un dato giorno, sempre che il sistema sia acceso ain quel determinato orario.
lo script dovrà essere di tipo sh (#!/bin/sh)
Il formato di questo può essere riassunto brevemente nel modo seguente:
Il comando viene eseguito attraverso la shell indicata all’interno della variabile `SHELL‘, mentre l’indicazione data-orario si scompone in altri cinque campi.
<minuti> <ore> <giorni-del-mese> <mesi> <giorni-della-settimana>
|
I campi possono contenere un asterisco (`*‘) e in tal caso rappresentano ogni valore possibile di quel campo. Per esempio, `* * * * *‘ rappresenta ogni minuto di ogni ora di ogni giorno del mese di ogni mese di ogni giorno della settimana.
A parte il caso degli asterischi, all’interno di questi campi si possono indicare dei valori numerici secondo gli intervalli seguenti:
- minuti — da 0 a 59;
- ore — da 0 a 23;
- giorni del mese — da 1 a 31;
- mesi — da 1 a 12;
- giorni della settimana — da zero a sette, dove sia zero che sette corrispondono alla domenica.
Per ognuno di questi campi, i valori possono essere indicati in vari modi con diversi significati.
- Valori singoli Un numero isolato all’interno di un campo indica che il comando deve essere eseguito quando l’orologio del sistema raggiunge quel valore. Per esempio, `10 6 * * *‘ rappresenta esattamente le ore 06:10 di ogni giorno.
- Intervalli Un intervallo, rappresentato da una coppia di numeri separati da un trattino, indica che il comando deve essere eseguito ogni volta che l’orologio del sistema raggiunge uno di quei valori possibili. Per esempio, `
10 6 1-5 * *‘ rappresenta esattamente le ore 06:10 dei primi cinque giorni di ogni mese.
- Elenchi Un elenco, rappresentato da una serie di numeri separati da una virgola (senza spazi), indica che il comando deve essere eseguito ogni volta che l’orologio del sistema raggiunge uno di quei valori. Per esempio, `10 6 1
-5 1,3,5 *‘ rappresenta esattamente le ore 06:10 dei primi cinque giorni di gennaio, marzo e maggio.
Gli elenchi possono essere anche combinati con gli intervalli. Per esempio, `10 6 1-5 1-3,5-7 *‘ rappresenta esattamente le ore 06:10 dei primi cinque giorni di gennaio, febbraio, marzo, maggio, giugno e luglio.
- Passo Invece di indicare momenti precisi, è possibile indicare una ripetizione o un passo. Questo può essere rappresentato con una barra obliqua seguita da un valore e indica che il comando deve essere eseguito ogni volta che è trascorsa quella unità di tempo. Per esempio, `
*/10 6 * * *‘ rappresenta le ore 06:10, 06:20, 06:30, 06:40, 06:50 e 06:00. In pratica, corrisponde a `0,10,20,30,40,50 6 * * *‘.
Il passo può essere combinato opportunamente con gli intervalli. Per esempio, `0-30/10 6 * * *‘ rappresenta le 6:00′, le 6:10′, le 6:20′ e le 6:30. In pratica, corrisponde a `0,10,20,30 6 * * *‘.
Quello che appare dopo i cinque campi dell’orario viene interpretato come un comando da eseguire. Più precisamente, viene considerato tale tutto quello che appare prima della conclusione della riga o di un segno di percentuale (`%‘). Quello che eventualmente segue dopo il primo segno di percentuale viene interpretato come testo da inviare allo standard input del comando stesso. Se all’interno del testo da inviare appaiono altri segni di percentuale, questi vengono trasformati in codici di interruzione di riga.
ANACRON
se non si accende mai l’elaboratore nell’intervallo di tempo in cui sarebbe previsto l’avvio di elaborazioni a cadenza giornaliera, settimanale o mensile, queste verrebbero automaticamente escluse. Per risolvere il problema, e cioè per garantire l’avvio di quelle elaborazioni, si può utilizzare Anacron.
****************************************************************
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
# These replace cron’s entries
1 5 cron.daily nice run-parts –report /etc/cron.daily
7 10 cron.weekly nice run-parts –report /etc/cron.weekly
@monthly 15 cron.monthly nice run-parts –report /etc/cron.monthly
****************************************************************
questo servizio garantisce che verrà effettuata l’esecuzione, ad esempio, 5 minuti dopo l’avvio del sistema se l’esecuzione era prevista ad un ora in cui il pc era spento.
I record che definiscono i job di Anacron sono composti da campi separati da spazi bianchi di qualunque tipo:
- il primo campo è un numero che esprime la cadenza in giorni con cui deve essere eseguito il comando;
- il secondo campo è un altro numero che esprime un ritardo in secondi, che deve essere atteso prima di cominciare;
- il terzo campo attribuisce un nome al job;
- l’ultimo campo è il comando corrispondente al job, e in questo caso particolare, il campo finale può contenere spazi.