Je scripts plannen met Cron

Introductie tot Bash-scripting

Alex Scriven

Data Scientist

Waarom scripts plannen?

 

Er zijn veel situaties waarin scripts plannen handig is:

  1. Terugkerende taken. Dagelijks, wekelijks, meerdere keren per dag.
    • Je kunt een agendamelding zetten, maar wat als je het vergeet!?
  2. Optimale resourcegebruik (scripts ’s nachts laten draaien)

Scripts plannen met cron is essentieel voor moderne datainfrastructuren.

Introductie tot Bash-scripting

Wat is cron?

 

Cron bestaat al sinds de jaren 70 op Unix-achtige systemen. Mensen zijn al zo lang lui!

De naam komt van het Griekse woord voor tijd, chronos.

Cron gebruikt een crontab: een bestand met cronjobs die aangeven welke code wanneer moet draaien.

Introductie tot Bash-scripting

Crontab – de motor van cronjobs

 

Je bekijkt de huidige planning (cronjobs) met:

crontab -l
crontab: no crontab for user

We moeten dus eerst een planning (cronjob) maken!

Introductie tot Bash-scripting

Crontab- en cronjob-structuur

Deze Wikipedia-afbeelding laat zien hoe je een cronjob in het crontab-bestand opzet. Je kunt meerdere cronjobs hebben, één per regel.

Structuur van een crontab

  • Er zijn 5 sterren, één per tijdseenheid
  • De standaard * betekent ‘elke’
Introductie tot Bash-scripting

Cronjob-voorbeeld

Laten we wat cronjob-voorbeelden doornemen:

5 1 * * * bash myscript.sh

  • Minutenster is 5 (5 over het uur). Urenster is 1 (na 1 uur ’s nachts). De laatste drie zijn *, dus elke dag en maand
    • Samengevat: draai elke dag om 1:05 uur ’s nachts.

 

15 14 * * 7 bash myscript.sh

  • Minutenster is 15 (15 over). Urenster is 14 (na 14:00). Volgende twee zijn * (elke dag van de maand, elke maand). Laatste is dag 7 (op zondag).
    • Samengevat: draai elke zondag om 14:15 uur.
Introductie tot Bash-scripting

Geavanceerde cronjob-structuur

Als je iets meerdere keren per dag of elke ‘X’ tijdseenheden wilt draaien, kan dat ook:

  • Gebruik een komma voor specifieke intervallen. Bijvoorbeeld:
    • 15,30,45 * * * * draait op minuut 15, 30 en 45 van de uren die door de tweede ster zijn aangegeven. Hier is dat elk uur, elke dag, etc.
  • Gebruik een slash voor ‘elke X’. Bijvoorbeeld:
    • */15 * * * * draait elke 15 minuten. Ook elk uur, elke dag, etc.
Introductie tot Bash-scripting

Je eerste cronjob

Laten we een script extract_data.sh plannen om elke ochtend om 1.30 uur te draaien. Stappen:

  1. Typ in de terminal crontab -e om je cronjobs te bewerken.
    • Je wordt mogelijk om een editor gevraagd. nano is eenvoudig en heeft een minder steile leercurve dan vi (vim).
  2. Maak de cronjob:
    • 30 1 * * * extract_data.sh
Introductie tot Bash-scripting

Je eerste cronjob

  1. Verlaat de editor en sla op

In nano (op Mac) gebruik je ctrl + o, dan enter, dan ctrl + x om af te sluiten.

Je ziet het bericht crontab: installing new crontab

  1. Controleer met crontab -l.
30 1 * * * extract_data.sh

Mooi werk!

Introductie tot Bash-scripting

Laten we oefenen!

Introductie tot Bash-scripting

Preparing Video For Download...