Cron/it

Questo articolo descrive come impostare ed utilizzare i demoni cron nel Linux Gentoo.

Cosa fa cron
Cron è un demone che esegue le attività in base all'input dal comando. Svolge questo compito attivandosi ogni minuto e controllando se ci sono lavori di cron da eseguire in una qualsiasi crontab dell'utente.

Il cron de facto
Ci sono alcune implementazioni cron da scegliere dal Portage. Tutte loro offrono una interfaccia simile, ovvero l'uso di o di un comando simile. C'è anche un'utilità correlata chiamata Anacron che è destinata a lavorare con cron nei sistemi che non sono in continuo funzionamento.

E' anche importante notare che tutti i pacchetti disponibili di cron dipendono da. Questo pacchetto non è tecnicamente dipendenza di ogni pacchetto cron, ma fornisce funzioni simili a cron che molti utenti possono apprezzare.

Prima di iniziare a lavorare con cron, una sua corretta implementazione deve essere selezionata. In questo articolo vengono fornite informazioni per ogni implementazione cron disponibile nel Linux Gentoo.

vixie-cron
Vixie-cron è un'implementazione con piene funzionalità basata sul cron SysV. Ogni utente ha il suo proprio crontab ed è consentito di specificare variabili d'ambiente all'interno di tale crontab. Diversamente dalle altre varianti di cron, questa offre supporto anche per SELinux e per PAM. Essa supporta meno architetture che Dcron, ma più rispetto a Fcron. L'ultima versione è la 4.1 rilasciata a gennaio 2004.

Caratteristiche di :


 * Supporto per SELinux;
 * Supporto per PAM ;
 * Impostazione di variabili di ambiente su crontabs (PATH, SHELL, HOME, etc.);
 * Ogni utente può avere un crontab personale; l'accesso è controllato da e da

cronie
Cronie è un fork di vixie-cron creato da Fedora. A causa del fatto che è un fork, esso ha le stesse impostazioni tipiche fornite sull'originale vixie-cron. In aggiunta, cronie ha un'implementazione anacron che deve essere abilitata tramite la USE flag.

dcron (Dillon's Cron)
L'intento di Dcron è quello di essere una semplice, elegante e sicura implementazione di cron. Essa non consente la specificazione delle variabili d'ambiente in crontabs e tutti i lavori di cron sono eseguiti da. Come vixie-cron, ogni utente ha il suo proprio crontab. A partire dalla versione 4 sono presenti le caratteristiche simili di anacron.

Caratteristiche di :


 * Veloce, semplice e senza caratteristiche inutili;
 * L'accesso a è limitato al gruppo cron, per esempio non si basa su altre facoltà esterne.

fcron
Fcron mira a rimpiazzare vixie-cron e anacron. E' creato per lavorare in sistemi che non sono continuamente in funzione ed è equipaggiato di caratteristiche extra. Tra tali caratteristiche c'è quella di abilitare lavori di avvio forzati, lavori di controllo di serializzazione, abilità di assegnare buone utilità ai lavori e abilità di programmare i lavori da eseguire all'avvio del sistema. Vedere fcron's home page per maggiori informazioni.

Caratteristiche di :


 * Disegnato per lavorare in sistemi che non sono continuamente in funzione, per esempio può eseguire un lavoro dopo il riavvio se tale lavoro era stato perso;
 * Variabili di impostazione di ambiente e molte altre opzioni in crontabs;
 * Sintassi di crontab migliorata con supporto per molte nuove caratteristiche;
 * Ogni utente può avere un crontab personale, l'accesso è controllato da e da

bcron
Bcron è un sistema cron nuovo, progettato avendo in mente operazioni di sicurezza. Per fare ciò, il sistema è diviso in svariati programmi separati, ognuno responsabile di un compito separato, con le comunicazioni tra di loro strettamente controllate. L'interfaccia utente è una copia di quella di sistemi simili (come vixie-cron), ma internamente differisce molto. Per maggiori informazioni vedere l'homepage di bcron su http://untroubled.org/bcron.

Caratteristiche di :


 * Rimpiazzo di vixie-cron;
 * Desig multiprocesso;
 * Supporto nativo dell'ora legale.

anacron
Anacron non è un demone cron ma è qualcosa che usualmente ci lavora in congiunzione. Esso esegue comandi a intervalli specificati in giorni e non presuppone che il sistema sia continuamente in funzione; esso eseguirà i lavori che erano stati persi mentre il sistema era in spegnimento. Anacron usualmente, per eseguire questo tutti i giorni, si basa su un demone cron.

Installazione
Scegliere la giusta soluzione per il lavoro da svolgere ed emergerla:

Controllare che il demone cron scelto sia stato aggiunto al processo di init del sistema; senza questo passo il demone cron non svolgerà il suo lavoro.

Opzionalmente, se Fcron o dcron non sono stati installati, installare Anacron come helper al demone cron potrebbe essere una scelta saggia.

Di nuovo non dimenticare di aggiungere anacron al processo di init del sistema.

Sistema crontab
Il messaggio post-installazione di qualcuno di questi pacchetti di cron richiede all'utente di eseguire. Il file è il "system crontab". Una installazione cron può utilizzarlo in associazione con per eseguire lo script in. Notare che solo vixie-cron e cronie pianificano i lavori automaticamente in. Gli utenti di dcron e di fcron dovranno eseguire ogni volta che apportano variazioni al file.

Notare che i lavori pianificati nel sistema di crontab potrebbero non apparire nella lista dei lavori cron visualizzata tramite il comando.

Ovviamente gli utenti possono scegliere di non utilizzare affatto nessun sistema crontab. Se viene optato per utilizzare dcron o fcron, non va eseguito. Se invece viene optato per utilizzare vixie-cron, cronie o bcron bisogna commentare tutte le righe in.

Una via facile e veloce per commentare tutte le linee nel file è quella di utilizzare il comando sed. Eseguire il seguente comando per commentare tutte le righe in

Dare i permessi di accesso a cron agli utenti
Per ottenere l'accesso al demone cron per gli utenti diversi da root, leggere questa sezione, altrimenti procedere alla prossima: Scheduling cron-jobs.

Qualsiasi pacchetto cron sia stato scelto, per permettere ad un utente di utilizzare crontab bisogna prima aggiungerlo al gruppo cron. Ad esempio, per aggiungere l'utente "wepy" al gruppo cron, eseguire:

Se si utilizza dcron, il passaggio di cui sopra necessita l'accesso a crontab da parte dell'utente. Gli utenti Dcron possono procedere alla prossima sezione Scheduling cron-jobs, tutti gli altri devono continuare con la lettura.

Se si utilizza fcron, modificare i files e. Il modo più sicuro per eseguire un sistema è, per prima cosa, negare tutti gli utenti in, e permettere solo gli utenti specificati su.

Se un utente ("wepy" anche per questo esempio) deve essere in grado di pianificare i propri lavori cron, allora bisogna aggiungerlo su come segue:

Se si utilizzano vixie-cron o cronie, invece, editare semplicemente il file.

Per esempio, per abilitare l'utente "wepy", aggiungerlo su come segue:

Programmare i lavori cron
Il processo di modifica dei crontabs è differente per ogni pacchetto, ma tutti i pacchetti supportano le stesse impostazioni base dei comandi: aggiungere e sostituire crontabs, modificare crontabs, cancellare crontabs ed elencare i lavori cron in crontabs. La seguente lista mostra come eseguire i vari comandi per ogni pacchetto.

Prima di utilizzare ognuno di questi comandi, è necessario comprendere crontab. Ogni riga in crontab specifica cinque campi nel seguente ordine: minuti (0-59), ore (0-23), giorni del mese (1-31), mesi (1-12) e giorni della settimana (0-7, lunedi è il giorno 1, domenica è il giorno 0 e il giorno 7). I giorni della settimana e i mesi possono essere specificati da un'abbreviazione di tre lettere, per esempio mon, tue, jan, feb, ecc.... Ogni campo può specificare anche un intervallo di valori (ad esempio 1-5 oppure mon-fri), una lista di valori separata da virgole (ad esempio 1,2,3 oppure mon,tue,wed) o un intervallo di valori a "step" (ad esempio 1-6/2 come 1,3,5 ovvero a intervallo di 2).

Questo può sembrare complesso, ma con qualche esempio sarà facile da capire, non è complicato.

Per verificare ciò che è stato appena impostato immettere qualche lavoro cron. Per prima cosa creare un file chiamato come segue:

Ora aggiungere questo crontab al sistema con il "nuovo comando" della tabella di cui sopra.

Per verificare i lavori cron programmati, utilizzare il corretto list command della tabella di cui sopra.

Dovrebbe essere visualizzato un elenco simile a ; se questo non avviene, forse è stato utilizzato il comando sbagliato per inserire il crontab.

Questo crontab dovrebbe ripetere "I really like cron" ogni minuto di ogni ora di ogni giorno ogni due mesi. Ovviamente un utente fa questo solo se veramente gli piace cron. Il crontab ripeterà anche "I like cron a little" alle 16:30 di ogni giorno di gennaio e di febbraio. Ripeterà anche "I don't really like cron" alle 3:10 del primo gennaio.

Se si utilizza anacron continuare la lettura di questa sezione. Altrimenti procedere alla prossima sezione su Modificare crontabs.

Gli utenti anacron dovranno modificare. Questo file ha quattro campi: il numero di giorni tra ogni esecuzione, il ritardo in minuti dopo il quale esso viene eseguito, il nome del lavoro e il comando da far eseguire.

Per esempio, per eseguire ogni 5 giorni, 10 minuti dopo l'avvio di anacron, digitare come segue:

Anacron viene chiuso dopo che tutti i lavori in anacrontab sono terminati. Per verificare se questi lavori devono essere eseguiti tutti i giorni bisogna utilizzare un demone cron. Come fare questo viene spiegato nelle istruzioni alla fine della prossima sezione.

Modificare crontabs
In realtà nessun utente vorrebbe sentirsi dire ogni minuto dal suo sistema quanto gli piace cron. Andando avanti, bisogna rimuovere l'esempio precedente di crontab utilizzando il corrispondente comando su rimuovere crontab dello schema di cui sopra. Utilizzare il corrispondente comando di elencazione per vedere i lavori cron, per essere sicuri che tutto funzioni.

Non dovrebbe essere elencato nessun lavoro cron nell'output di. Se sono elencati lavori cron, invece, significa che il comando per rimuoverli non ha funzionato; verificare il corretto comando perrimuovere crontab relativo al pacchetto cron installato sul sistema.

Ora che abbiamo una situazione chiara, mettiamo qualcosa di utile nel crontab root. Molte persone eseguiranno su base mensile per assicurarsi che mlocate funzioni a dovere. Per aggiungere questo al crontab di sistema per prima cosa editare il file come segue:

Questo fa eseguire a cron l'updatedb alle ore 2:22 A.M. di lunedi mattina di ogni settimana. Ora inserire il crontab con il comando appropriato come da voce nuovo crontab nella tabella sopra, e verificare la lista dei lavori cron.

Ora bisognerebbe lasciare eseguire giornalmente per mantenere aggiornato l'albero del Portage. Questo può essere fatto editando ed utilizzando successivamente  come è stato fatto nell'esempio sopra, oppure utilizzando il comando appropriato come mostrato nella tabella sopra alla voce modificare crontab. Questo provvede ad editare direttamente il crontab dell'utente senza dipendere da files esterni tipo.

Il comando sopra dovrebbe aprire il crontab dell'utente con un editor di testo. Per esempio, se è impostato per essere eseguito ogni giorno alle ore 6:30 A.M., editare il crontab in maniera simile a questa:

Verificare nuovamente la lista di lavori cron come fatto nell'esempio precedente per assicurarsi che i lavori siano programmati. Se ci sono tutti allora il sistema è pronto.

Utilizzare cronbase
Come già detto, tutti i pacchetti disponibili di cron dipendono da. Il pacchetto cronbase crea, e uno script chiamato. Notare che il file contiene qualcosa simile a questo:

To avoid going into much detail, assume these commands will effectively run hourly, daily, weekly and monthly scripts. This method of scheduling cron-jobs has some important advantages:


 * They will run even if the computer was off when they were scheduled to run;
 * It is easy for package maintainers to place scripts in those well defined places;
 * The administrators know exactly where the cron-jobs and crontab are stored, making it easy to backup and restore these parts of their systems.

Using anacron
As mentioned earlier, anacron is used on systems not meant to be run continuously (like most of the desktop installations). Its default configuration file,, is usually similar to the following:

The main difference between this and other common crontabs is that with anacron there is no fixed date/hour for the job scheduling, but only the period between every run. When anacron is started, it will check the contents of a set of files in and calculate if the corresponding entry in the configuration file has expired since the last run. If it has, then the command is invoked again.

As a final note, it is important to comment out any overlapping entry in any other cron installed in the system, such as in the following vixie-cron crontab example:

Without doing this, the daily, weekly and monthly parts will be executed - at different times - by both the cron daemon and anacron, leading to possible double job executions.

Troubleshooting
When having problems getting cron to work properly, this quick checklist might be helpful.

Remember, each cron package is different and the range of features varies greatly. Be sure to consult the man pages for crontab, fcrontab, or anacrontab, depending on which cron daemon has been activated!

Is cron running?
To verify that cron is running, see if it shows up in the process list:

Is cron working?
Try the following:

Then check if is modified periodically.

Is the command working?
Same as before, but perhaps redirect the standard error output as well:

Can cron run the job?
Check the cron log, usually or  for errors.

Are there any s?
cron usually sends mail when there is a problem; check for mail and look for the creation of a file.

Cron Jobs Alternatives
Some hosting companies do not allow access to cron, but many cron jobs alternatives can be found which are free or commercially available:


 * EasyCron