Cron

From campisano.org
Jump to navigation Jump to search

Il cron default in Debian é il Vixie Cron. Questo job scheduler avvia con i provilegi di root i comandi configurati in /etc/crontab e con i privilegi dell'utente nel percorso /var/spool/cron/crontabs/USER_NAME. Inoltre é generalmente configurato per eseguire con i privilegi di root i files che trova nella directory /etc/cron.d/.


Una osservazione per quanto riguarda il contenuto della directory /etc/cron.d/, preso da man 8 cron:

Files must conform to the same naming convention as used by run-parts(8): they must consist solely of
upper- and lower-case letters, digits, underscores, and hyphens. If the -l option  is  specified,
then they must conform to the LSB namespace specification
[...]
In contrast to the spool area, files in /etc/cron.d may be symlinks, provided that both the symlink
and the file it points to are owned by root


Esiste una differenza sostanziale nella sintassi dei file di configurazione che sono usati per eseguire i comandi con i privilegi di root: la differenza di quelli usati per ciascun utente é che nei primi esiste un 'parametro' di configurazione in più che specifica l'utente di cui saranno usati i privilegi per avviare il comando.


Un esempio di /etc/crontab (la cui sintassi é identica ai files contenuti in /etc/cron.d/) é il seguente:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m  h   dom mon dow     user     command
17   *   *   *   *       root     cd / && run-parts --report /etc/cron.hourly
25   6   *   *   *       root     test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47   6   *   *   7       root     test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52   6   1   *   *       root     test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )


Le prime 5 colonne indicano il tempo di ripetizione: nella prima riga é indicata una ripetizione oraria (a ogni minuto 17 di ogni ora), nella seconda una ripetizione giornaliera (alle 6:25 di ogni giorno), nella terza una ripetizione settimanale (alle 6:47 ogni giorno 7 della settimana [DOW]) e nella quarta una ripetizione mensile (ogni giorno 1 del mese [DOM]).


La sesta colonna indica l'utente di cui saranno usati i privilegi per avviare il comando. Questa colonna non é presente nei file di configurazione di ciascun utente (che si trovano in /var/spool/cron/crontabs/USER_NAME ma devono essere creati da ciascun utente attraverso il comando crontab.


La settima e ultima colonna (che comprende tutti i caratteri fino a quello di nuova linea) indica il comando che sará eseguito in una shell. In questo esempio sono usate conbinazioni di comandi per usare anacron se presente (che si occupa di eseguire comandi che dovevano essere eseguiti quando il computer era spento, é usato in sistemi che non sono accesi tutto il tempo) e run-parts che si occupa di eseguire tutti i script presenti nella directory indicata (ad esempio nella directory /etc/cron.daily sono presenti script che saranno eseguiti tutti i giorni alle ore 6:25).