Pianificare gli script con Cron

Introduzione al Bash Scripting

Alex Scriven

Data Scientist

Perché pianificare gli script?

 

Ci sono molte situazioni in cui pianificare script è utile:

  1. Attività ricorrenti: giornaliere, settimanali, più volte al giorno.
    • Potresti usare un promemoria calendario, ma e se te ne dimentichi!?
  2. Uso ottimale delle risorse (esecuzione nelle prime ore del mattino)

Pianificare con cron è essenziale per lavorare con moderne infrastrutture dati.

Introduzione al Bash Scripting

Cos’è cron?

 

Cron esiste nei sistemi tipo Unix dagli anni ’70. Gli umani sono pigri da allora!

Il nome viene dal greco del tempo, chronos.

È gestito da un crontab, un file che contiene cronjobs, ognuno dei quali indica a crontab cosa eseguire e quando.

Introduzione al Bash Scripting

Crontab: il motore dei cronjob

 

Puoi vedere le pianificazioni (cronjobs) attive con:

crontab -l
crontab: no crontab for user

Sembra che dobbiamo creare una pianificazione (cronjob)!

Introduzione al Bash Scripting

Struttura di crontab e cronjob

Questa ottima immagine da Wikipedia mostra come costruire un cronjob nel file crontab. Puoi avere molti cronjobs, uno per riga.

Struttura di un crontab

  • Ci sono 5 stelline da impostare, una per ogni unità di tempo
  • Il valore predefinito, *, significa "ogni"
Introduzione al Bash Scripting

Esempio di cronjob

Vediamo alcuni esempi di cronjob:

5 1 * * * bash myscript.sh

  • Minuti a 5 (5 minuti dopo l’ora). Ore a 1 (dopo l’1 di notte). Gli ultimi tre sono *, quindi ogni giorno e mese
    • In sintesi: esegui ogni giorno alle 1:05.

 

15 14 * * 7 bash myscript.sh

  • Minuti a 15. Ore a 14 (alle 14:00). I due successivi sono * (ogni giorno del mese, ogni mese). L’ultimo è giorno 7 (domenica).
    • In sintesi: esegui alle 14:15 ogni domenica.
Introduzione al Bash Scripting

Struttura avanzata dei cronjob

Se vuoi eseguire qualcosa più volte al giorno o ogni "X" intervalli di tempo, è possibile:

  • Usa la virgola per intervalli specifici. Esempio:
    • 15,30,45 * * * * esegue ai minuti 15, 30 e 45 per qualsiasi ora indicata dalla seconda stellina. Qui è ogni ora, ogni giorno, ecc.
  • Usa la barra per "ogni X". Esempio:
    • */15 * * * * esegue ogni 15 minuti. Anche ogni ora, giorno, ecc.
Introduzione al Bash Scripting

Il tuo primo cronjob

Pianifichiamo uno script chiamato extract_data.sh da eseguire ogni mattina alle 1:30. Passi:

  1. Nel terminale digita crontab -e per modificare l’elenco dei cronjob.
    • Potrebbe chiederti l’editor. nano è semplice e con curva di apprendimento più bassa di vi (vim).
  2. Crea il cronjob:
    • 30 1 * * * extract_data.sh
Introduzione al Bash Scripting

Il tuo primo cron job

  1. Esci dall’editor per salvare

Se usi nano (su Mac) premi ctrl + o, poi enter, poi ctrl + x per uscire.

Vedrai il messaggio crontab: installing new crontab

  1. Verifica con crontab -l.
30 1 * * * extract_data.sh

Ottimo lavoro!

Introduzione al Bash Scripting

Passiamo alla pratica!

Introduzione al Bash Scripting

Preparing Video For Download...