|
crontab -e |
|
Edita il proprio file crontab
(con l'editor predefinito) |
crontab -l |
|
Visualizza il proprio file crontab |
crontab -r |
|
Rimuove il proprio file crontab |
cat /var/spool/cron/* |
|
Visualizza tutti i file crontab degli utenti
(si deve essere root) |
|
|
Linux |
*nix |
Win-DOS |
cron |
cron |
Operazioni pianificate |
at |
at |
at |
|
|
|
Se voglio lanciare lo script /root/controlla_post.sh ogni mezz'ora
in orari lavorativi (dalle 8 alle 18.30), sabato e domenica esclusi,
dovrò inserire in /etc/crontab una riga simile:
01,31 8,9,10,11,12,13,14,15,16,17,18 * * 1,2,3,4,5
root /root/controlla_posta.sh
Una versione più compatta della stessa riga è:
01,31 8-18/1 * * 1-5/1 root /root/controlla_posta.sh
Le modifiche fatte al file /etc/crontab non richiedono il
riavvio del daemon crond.
Su Linux si trova comunemente anacron, che ha funzionalità
simili a cron ma alcune features aggiuntive, utili per macchine
che non sempre sono accese, tali per cui è in grado di eseguire
task schedulati nel passato e non eseguiti appena la macchina è
in grado di farlo (è accesa).
Anacron è complementare a crond in quanto non ha la stessa
precisione nella gestione dello scheduling, per cui non ha molto
senso utilizzarlo su server accesi 24 ore su 24.
|
|
definizioni |
|
In quasi tutti i sistemi operativi è possibile
schedulare o meglio programmare ad un certo orario l'avvio di un comando
o programma senza essere collegati in qualche modo al sistema.
Gli strumenti disponibili su Unix e Linux sono:
at |
Permette di eseguire un comando
una volta sola, eventualmente quando il sistema non è
occupato o in un momento definibile dall'utente. Non verrà
trattato in questa sede. |
cron |
E' un daemon che viene utilizzato
dal sistema per eseguire compiti configurabili dall'utente ad
intervalli regolari. |
|
Cron e crontab |
|
Il demone crond viene eseguito all'avvio del sistema ( /etc/rc.d/init.d/crond
) e, ogni minuto, analizza il suo file di configurazione predefinito
/etc/crontab per verificare se deve
eseguire dei comandi.
Su varie distribuzioni /etc/crontab
prevede le seguenti voci:
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
Che in pratica fanno eseguire:
- tutte le ore (al minuto 01) i comandi presenti nella directory
/etc/cron.hourly,
- tutti i giorni alle 4.02 i comandi in /etc/cron.daily,
- tutte le settimane, alle 4.22 di domenica i comandi in
/etc/cron.weekly,
- tutti i mesi, alle 4.42 del primo del mese, tutti i comandi
in /etc/cron.monthly
Ogni riga di /etc/crontab prevede quindi sette campi.
I primi 5 campi servono per definire quando eseguire il comando
specificato nel settimo campo. Possono contenere valori separati
da virgola o un asterisco che indica tutti i calori possibili:
1) Minuto in cui eseguire il comando. Valori da 00 a 59.
2) Ora in cui eseguire il comando. Valori da 0 a 23
(0 è mezzanotte, 12 mezzogiorno)
3) Giorno del mese in cui eseguire il comando. Valori da
1 a 31.
4) Mese dell'anno in cui eseguire il comando. Valori da
1 a 12.
5) Giorno della settimana in cui eseguire il comando. Valori
da 0 a 6. (0 corrisponde alla Domenica, 1 al Lunedì..
)
6) Utente con cui viene eseguito il comando. Crond viene
eseguito come root e può impersonificare qualsiasi utente.
Questo campo può anche essere omesso (root di default).
7) Riga di comando da eseguire (con eventuali opzioni, argomenti
ecc.)
Il comando run-parts, nel caso di cui sopra, esegue tutti i comandi
presenti nella directory indicata.
Oltre a /etc/crontab, riservato al sistema, ogni utente può
editare un proprio crontab file con la stessa struttura di /etc/crontab.
In BOFH! i dettagli.
|
|
|