Planifier vos scripts avec Cron

Introduction à la programmation Bash

Alex Scriven

Data Scientist

Pourquoi planifier des scripts ?

 

Plusieurs situations rendent la planification de scripts utile :

  1. Tâches récurrentes à exécuter quotidiennement, chaque semaine ou plusieurs fois par jour.
    • Vous pourriez vous mettre un rappel au calendrier, mais et si vous l'oubliez !?
  2. Utilisation optimale des ressources (exécuter les scripts aux petites heures du matin)

Planifier des scripts avec cron est essentiel pour maîtriser les infrastructures de données modernes.

Introduction à la programmation Bash

Qu'est-ce que cron ?

 

Cron existe sur les systèmes de type Unix depuis les années 70. Les humains sont paresseux depuis tout ce temps !

Le nom vient du mot grec du temps, chronos.

Il est piloté par un « crontab », un fichier qui contient des « cronjobs », chacun indiquant à crontab quel code exécuter et quand.

Introduction à la programmation Bash

Crontab – le moteur des cronjobs

 

Vous pouvez voir quels horaires (cronjobs) sont programmés avec la commande suivante :

crontab -l
crontab: no crontab for user

Il semble qu'il faille créer un horaire (cronjob) !

Introduction à la programmation Bash

Structure de crontab et des cronjobs

Cette excellente image de Wikipédia montre comment construire un cronjob dans le fichier crontab. Vous pouvez avoir plusieurs cronjobs, un par ligne.

Structure d'un crontab

  • Il y a 5 astérisques à définir, un par unité de temps
  • Par défaut, * signifie « chaque »
Introduction à la programmation Bash

Exemple de cronjob

Passons quelques exemples de cronjobs :

5 1 * * * bash myscript.sh

  • Minute est 5 (5 minutes après l'heure). Heure est 1 (après 1 h). Les trois derniers sont *, donc chaque jour et chaque mois
    • En résumé : exécuter chaque jour à 1 h 05.

 

15 14 * * 7 bash myscript.sh

  • Minute est 15 (15 minutes après l'heure). Heure est 14 (après 14 h). Les deux suivants sont * (chaque jour du mois, chaque mois). Le dernier est le jour 7 (le dimanche).
    • En résumé : exécuter chaque dimanche à 14 h 15.
Introduction à la programmation Bash

Structure avancée de cronjob

Si vous voulez exécuter quelque chose plusieurs fois par jour ou à chaque « X » incréments, c'est aussi possible :

  • Utilisez une virgule pour des intervalles précis. Par exemple :
    • 15,30,45 * * * * s'exécute aux minutes 15, 30 et 45 pour les heures indiquées par la deuxième étoile. Ici, c'est chaque heure, chaque jour, etc.
  • Utilisez une barre oblique pour « chaque X incréments ». Par exemple :
    • */15 * * * * s'exécute toutes les 15 minutes. Aussi chaque heure, jour, etc.
Introduction à la programmation Bash

Votre premier cronjob

Planifions un script nommé extract_data.sh pour chaque matin à 1 h 30. Procédez ainsi :

  1. Dans le terminal, tapez crontab -e pour modifier votre liste de cronjobs.
    • On peut vous demander l'éditeur à utiliser. nano est une option simple et plus facile à apprendre que vi (vim).
  2. Créez le cronjob :
    • 30 1 * * * extract_data.sh
Introduction à la programmation Bash

Votre premier cron job

3. Quittez l'éditeur pour enregistrer

Avec nano (sur Mac), utilisez ctrl + o, puis enter, puis ctrl + x pour quitter.

Vous verrez le message crontab: installing new crontab

4. Vérifiez sa présence avec crontab -l.

30 1 * * * extract_data.sh

Beau travail !

Introduction à la programmation Bash

Passons à la pratique !

Introduction à la programmation Bash

Preparing Video For Download...