Come pianificare l'esecuzione dei processi Linux

Sul sistema operativo Linux posso pianificare l'esecuzione automatica di un programma in una particolare data e ora del giorno, oppure a intervalli periodici, utilizzando il servizio cron.

Cos'è cron? E' un servizio di Linux che permette all'utente di automatizzare l'esecuzione dei processi, job e programmi pianificati.

Per configurare il servizio cron si utilizza il comando crontab.

Come funziona Cron su Linux

Il comando crontab crea un file di testo a tabella (cron + tab = crontab) dove sono presenti due informazioni:

  1. il nome del programma
  2. le condizioni temporali per eseguirlo
    • minuto (0-59)
    • ora (0-23)
    • giorno del mese (1-31)
    • mese (1-12)
    • giorno della settimana (0-6)

Ogni minuto il sistema operativo controlla la tabella crontab.

Se le condizioni temporali di esecuzione sono soddisfatte, Linux eseguire il programma pianificato.

Un esempio pratico

Per eseguire il programma /bin/prova.sh alle 12:00 di ogni giorno, aggiungo il seguente record nel file crontab:

0 12 * * * /bin/prova.sh

Il primo valore indica i minuti (0) mentre il secondo valore l'ora (12).

Il terzo, quarto e quinto valore indicano rispettivamente il giorno del mese, il mese dell'anno e il giorno della settimana.

A cosa servono gli asterischi? Nel terzo, quarto e quinto campo ci sono degli asterischi (*). Vuol dire che questi campi non sono da prendere in considerazione. Quindi, non conta quale giorno o mese sia. L'unica condizione da verificare è che siano le ore 12:00.

Quando l'orologio del sistema operativo segna le ore 12:00 il servizio cron esegue il programma /bin/prova.sh.

Alcune informazioni aggiuntive per usare bene crontab

In ogni campo posso anche inserire più valori separati da virgola o dal trattino.

Esempio 1 (virgola)

0 12,15 * * * /bin/prova.sh

In questo caso, il processo viene eseguito alle ore 12:00 e alle ore 15:00.

In pratica all'ora 12 e all'ora 15, nel minuto 00.

Esempio 2 (trattino)

0 12-15 * * * /bin/prova.sh

L'esecuzione avviene in modo continuativo alle 12:00, alle 13:00, alle 14:00, alle 15:00.

In pratica dalle ore 12 alle ore 15, nel minuto 00.

Il comando crontab

La sintassi del comando crontab è la seguente:

il comando crontab

Ogni utente ha una tabella crontab personale.

Come pianificare un nuovo processo

Per modificare la mia tabella crontab digito sulla linea di comando:

crontab -e

Il comando apre la tabella con un editor di testo.

Nel mio caso ho scelto di utilizzare l'editor nano.

l'editor di testo modifica il file crontab del mio utente

A questo punto aggiungo una nuova riga.

Ad esempio, pianifico l'esecuzione del programma prova.sh alle 12:00 di ogni giorno.

0 12 * * * /bin/prova.sh

Ora salvo il file premendo i tasti CTRL + O e do invio.

Poi esco dall'editor nano premendo CTRL + X.

Ho pianificato l'esecuzione del processo.

Il sistema operativo eseguirà il programma prova.sh alle 12:00 di ogni giorno.

Come visualizzare i processi pianificati

Per visualizzare i processi che ho pianificato digito il comando crontab con l'opzione -l.

crontab -l

L'opzione -l mostra sulla linea di comando il contenuto del file crontab associato al mio utente.

Come modificare i processi pianificati su crontab

Per modificare i processi che ho pianificato sulla tabella crontab, digito il comando crontab con l'opzione -e.

crontab -l

L'opzione -e apre il file crontab con un editor di testo.

A questo punto lo modifico e poi lo salvo.

Come eliminare la tabella crontab

Per annullare tutti i processi pianificati con il mio profilo utente, digito il comando crontab con l'opzione -r.

crontab -r

L'opzione -r cancella il file crontab del mio utente.

A questo punto non ho più processi pianificati.

Esempi pratici su crontab

Per eseguire un processo ogni anno alla mezzanotte del 1° gennaio.

0 0 1 1 * /processo_da_eseguire

Per eseguire un processo ogni mese alla mezzanotte del primo del mese.

0 0 1 * * /processo_da_eseguire

Per eseguire un processo ogni settimana alla mezzanotte della domenica

0 0 * * 0 /processo_da_eseguire

Per eseguire un processo ogni giorno a mezzanotte.

0 0 * * * /processo_da_eseguire

Per eseguire un processo ogni ora del giorno.

0 * * * * /processo_da_eseguire

E così via.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Libri di approfondimento

I processi su Linux