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:

Per evitare di trattare troppi dettagli, assumere che tali comandi eseguiranno gli scripts ogni giorno, ogni ora, ogni settimana e ogni mese. Tale metodo di programmare i lavori cron ha qualche vantaggio importante:


 * Essi verranno eseguiti anche se il computer è spento, se sono programmati per essere eseguiti;
 * E 'facile per i manutentori dei pacchetti inserire gli script in quelle posizioni ben definite;
 * Gli amministratori sanno esattamente dove sono memorizzati i lavori cron e crontab, così che diventa facile fare il backup e il restore di tali parti del loro sistema.

Utilizzare anacron
Come già detto, anacron è utilizzato in sistemi non studiati per essere continuamente in funzione (come la maggior parte delle installazioni desktop). Il suo file di configurazione di default,, in genere è simile al seguente:

La principale differenza tra questo e gli altri crontab comuni è che con anacron non vi è alcuna data/ora fissa per la pianificazione del lavoro, ma solo il periodo entro il quale ogni lavoro deve essere eseguito. Quando anacron è avviato, esso verificherà il contenuto di un set di files in e calcola se la voce corrispondente nel file di configurazione è scaduta dopo l'ultima esecuzione. Se lo è, il comando viene invocato nuovamente.

Come nota finale, è importante commentare ogni voce di sovrapposizione in ogni cron installato sul sistema, come nel seguente esempio di vixie-cron:

Senza fare questo, i lavori giornalieri, settimanali e mensili verranno eseguiti - in tempi differenti - sia dal demone cron che anacron, portando a possibili doppie esecuzioni di lavori.

Risoluzione di problemi
In caso di problemi con i lavori di cron, questa breve checklist può essere utile.

Ricordare, ogni pacchetto cron è differente è il range di caratteristiche varia notevolmente. Consultare il manuale di crontab, fcrontab o anacrontab, in base a quale demone cron è stato attivato!

Cron è in esecuzione?
Per verificare se cron è in esecuzione, vedere se è evidenziato nella lista dei processi:

Cron sta lavorando?
Provare come segue:

Quindi verificare se viene periodicamente modificato.

Il comando sta lavorando?
Come prima, ma forse reindirizzare anche l'output di errore standard:

Cron può eseguire il lavoro?
Per vedere gli errori verificare il log cron, in genere oppure.

Ci sono tutte le s?
Generalmente cron invia una mail quando c'è un problema; verificare le mail e vedere se è stato creato il file.

Cron Jobs alternativi
Alcune società di hosting non consentono l'accesso a cron, ma possono essere trovati molti cron jobs alternativi, che possono essere liberi o disponibili commercialmente:


 * EasyCron