Crontab Linux

Crontab Linux √® l’abbreviazione di cron table ed √® un elenco di comandi necessari a generare una pianificazione atta all’esecuzione di script e procedure ad orari, giorni del mese e giorni della settimana prestabiliti nel tempo senza la necessit√† che un sistemista o un programmatore li eseguano manualmente sul computer o server.

Crontab Linux è legato al demone cron prendendo il nome proprio dal dio del tempo greco Kronos e può essere facilmente controllato da terminale consenteCrontab Linux - IT Blog - Blog I.T.ndo di aggiungere, rimuovere o modificare qualsiasi attività pianificata.

La sintassi del comando crontab √® semplice ed √® solitamente legata all’utente che ha aperto il terminale, anche se i sistemisti¬†preferiscono utilizzarlo aprendo il terminale come utente amministrativo Linux e cio√® “root” oppure anteponendo il comando “sudo” (sintassi Ubuntu)

La metodica utilizzata per richiamare il crontab Linux è la seguente:

crontab

sudo crontab

crontab [ -u utente ] del file

crontab [ -u utente ] [ -l | -r | -e ] [ -i ] [ -s ]

E’ necessario spiegare le varie opzioni insite in questo potente comando, in quanto spesso vengono dimenticate con il passare del tempo.

file
Carica i dati crontab dal file specificato e se il file √® un trattino (” – “), i dati crontab vengono letti dallo standard input .

-u nome utente
Specifica l’utente con cui crontab deve essere visualizzato o modificato e se questa opzione non viene fornita, crontab Linux apre quello dell’utente che ha eseguito il comando e quindi aperto il terminale.

Consigliamo sempre di non eseguire il crontab Linux dallo user “su”, in quanto potrebbero avvenire errori imprevisti ed √® sempre preferibile o aprire il terminale e quindi entrare con l’utente che dovr√† effettuare le operazioni pianificate, oppure utilizzare semplicemente l’opzione “-u” seguito dal nome dell’utente

-l
Visualizza tutte le operazioni che sono state inserite nel crontab di quell’utente, permettendoci di deciderne eventuali modifiche o rimozioni.

-r
Con il comando crontab -r abbiamo la possibilit√† di rimuovere completamente tutto ci√≤ che abbiamo pianificato ed √® un’opzione molto potente ed il consiglio rimane sempre quello di verificare due volte ci√≤ che si √® scritto, in quanto non √® possibile tornare indietro sui propri passi.

-e
Permette di modificare l’editor che preferiamo utilizzare con il crontab Linux ed un esempio ve lo forniamo subito sotto:

Select an editor. To change later, run ‘select-editor’.
1. /bin/ed
2. /bin/nano <—- easiest
3. /usr/bin/code
4. /usr/bin/vim.tiny

Choose 1-4 [2]: 2
crontab: installing new crontab

Con l’opzione crontab -e, qualora avessimo compiuto una scelta sbagliata alla prima esecuzione del comando, avremo la possibilit√† di rimediare.

-io
E’ un’opzione poco usata ed √® identica a -r ma fornisce all’utente la possibilit√† di confermare con un Y/N prima di rimuovere tutto il contenuto del crontab stesso.

Non spiegheremo l’utilizzo dell’opzione -s (SeLinux), in quanto non attiva di default nei sistemi Ubuntu/Debian per la presenza di AppArmor e quindi, caduta quasi completamente in disuso

Dato che i sistemi operativi moderni sono multi utente e cio√® danno la possibilit√† a pi√Ļ persone di lavorare sulla stessa macchina (contemporaneamente se da remoto) singolarmente , potendo generare uno spazio di lavoro personalizzato, ovviamente, ogni utente ha la possibilit√† di programmarsi il suo crontab Linux personale e lanciare le varie procedure pianificandole secondo le proprie esigenze.

Il file generato dal comando crontab, si trova solitamente in /var/spool/cron e non pu√≤ essere modificato direttamente se non passando per il crontab stesso, oppure l’utente root, potr√† avvalersi dei suoi poteri di amministratore e scendere ulteriormente di livello digitando cd crontabs e visualizzer√† all’interno di questa sotto directory, i nomi di tutti gli utenti presenti sulla macchina, che hanno generato un file crontab ed agendo singolarmente su uno di quelli presenti con un editor, avr√† la possibilit√† di effettuare eventuali modifiche senza la necessit√† di conoscere le corrette credenziali dell’utente che l’ha generato.

Ogni voce del comando cron nel file crontab ha cinque campi che sono l’ora e la data e vi √® un sesto campo contenente l’indicazione dello script o il comando stesso da eseguire come pianificato ed il demone cron, controllando il crontab ogni minuto, consente nel momento corrispondente, l’attivazione della procedura richiesta.

I vari campi vengono indicati nel seguente modo, tenendo presente che dove √® presente un solo simbolo numerico, per convenzione √® preferibile precederlo con uno zero, laddove invece √® presente uno zero singolo, scriveremo un doppio zero ” 00 “

minuti 00 – 59
ore  00 Р23
giorno del mese 01 – 31
mese 01 Р12  come anche possiamo scrivere il nome del mese abbreviato, sul tipo di jan, may, dec, jul e così via
giorno della settimana 00 Р07  oppure come per i mesi, potremo scrivere semplicemente mon, sun, tue e così via

In ogni campo potrà essere impostato un asterisco ( * ), che significa ogni giorno, ogni mese, ogni ora, ogni minuto etc etc

Possono essere utilizzati numeri ed intervalli separandoli con un trattino come ad esempio, 6-9 per una voce “ore” indicher√† l’esecuzione alle ore 6, 7, 8 e 9.

E’ anche possibile utilizzare delle liste e cio√® che un insieme di numeri o intervalli separati da virgole tipo ” 1,2,7,10 ” oppure ” 2-6,9-15 “.

I valori Step possono essere usati insieme ai range laddove per esempio ” 00-23 / 2 ” nel campo ore significa “ogni mezz’ora”.

Dopo un’asterisco, se vogliamo¬† che una procedura si attivi ogni due ore,¬† potremo scrivere “ * / 2

Se entrambi i campi sono limitati (in altre parole, non sono * ), il comando verr√† eseguito quando uno dei due campi corrisponder√† all’ora corrente. Ad esempio, ” 30 4 1,15 * 5 ” causerebbe l’esecuzione di un comando alle 4:30 del 1 ¬į e del 15 di ogni mese, pi√Ļ ogni venerd√¨.

Un altro errore comune √® quello di inserire caratteri ” % ” nel comando da eseguire senza il¬† relativo escape, in quanto il carattere ” % ” significa una nuova linea.

# Errore 1 2 3 4 5 touch ~/errore_`date “+%Y%m%d”`.txt
# Corretto 1 2 3 4 5 touch ~/corretto_`date +\%Y\%m\%d`.txt

E’ importantissimo dopo l’ultima riga non inserire assolutamente un invio (Return) in quanto altrimenti, quest’ultima riga non verr√† considerata e la procedura richiesta in quest’ultima non potr√† essere eseguita.

Qualora fosse nostro desiderio isolare o per meglio dire, commentare una riga in modo che non venga pi√Ļ utilizzata, pur conservandola per futuri reinserimenti o solo per esempio, sar√† sufficiente precedere il campo dei minuti e cio√® il primo, con un ” # ” .

Con il crontab Linux, √® possibile utilizzare delle variabili d’ambiente a seconda della distribuzione utilizzata.

I lavori cron possono essere consentiti o non consentiti per i singoli utenti, come definito nei file /etc/cron.allow e /etc/cron.deny e se cron.allow esiste, un utente deve essere elencato lì per poter utilizzare un determinato comando.

Se il file cron.allow non esiste ma il file cron.deny è presente, allora un utente non deve essere elencato lì per usare un dato comando.

Nel caso nessuno di questi file esiste, solo l’utente amministrativo ” root ” sar√† in grado di utilizzare un determinato comando.

E’ importante ricordare che ogni volta che viene eseguita una procedura e quindi una riga del crontab Linux, viene inviata una email ed eventuali operazioni vengono riportate a video; per impedire che ci√≤ avvenga, bisogner√† semplicemente aggiungere ”¬†>/dev/null 2>&1 ” in fondo alla riga.

Crontab Linux - IT Blog - Blog I.T.