Planifier vos scripts avec Cron

Introduction au scripting Bash

Alex Scriven

Data Scientist

Pourquoi planifier des scripts ?

 

Il existe de nombreuses situations où la planification de scripts est utile :

  1. Tâches récurrentes à exécuter : quotidiennes, hebdomadaires, plusieurs fois par jour.
    • Vous pourriez créer un rappel calendrier, mais et si vous oubliez ?
  2. Utilisation optimale des ressources (lancer des scripts au petit matin)

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

Introduction au scripting Bash

Qu'est-ce que cron ?

 

Cron fait partie des systèmes de type Unix depuis les années 70. Les humains sont « paresseux » depuis tout ce temps !

Son nom vient du 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 au scripting Bash

Crontab – le moteur des cronjobs

 

Vous pouvez voir les plannings (cronjobs) actuellement programmés avec la commande :

crontab -l
crontab: no crontab for user

Il faut donc créer un planning (cronjob) !

Introduction au scripting Bash

Structure de crontab et de cronjob

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
  • La valeur par défaut, *, signifie « tous »
Introduction au scripting Bash

Exemple de cronjob

Passons en revue quelques exemples de cronjobs :

5 1 * * * bash myscript.sh

  • Minute = 5 (5 minutes après l'heure). Heure = 1 (après 1 h). Les trois derniers sont * : tous les jours et mois.
    • En résumé : tous les jours à 1 h 05.

 

15 14 * * 7 bash myscript.sh

  • Minute = 15 (à H:15). Heure = 14 (après 14 h). Les deux suivants sont * (tous les jours du mois, tous les mois). Le dernier est 7 (le dimanche).
    • En résumé : tous les dimanches à 14 h 15.
Introduction au scripting Bash

Structure avancée de cronjob

Si vous souhaitez exécuter quelque chose plusieurs fois par jour ou toutes les « X » unités, c'est possible :

  • Utilisez une virgule pour des instants précis. Par exemple :
    • 15,30,45 * * * * s'exécute aux minutes 15, 30 et 45 pour les heures précisées par la deuxième étoile. Ici : chaque heure, chaque jour, etc.
  • Utilisez un slash pour « tous les X ». Par exemple :
    • */15 * * * * s'exécute toutes les 15 minutes. Là aussi, pour chaque heure, jour, etc.
Introduction au scripting Bash

Votre premier cronjob

Planifions un script nommé extract_data.sh tous les matins à 1 h 30. Procédez ainsi :

  1. Dans le terminal, tapez crontab -e pour modifier vos cronjobs.
    • Il peut vous demander l'éditeur à utiliser. nano est simple, avec une courbe d'apprentissage plus douce que vi (vim).
  2. Créez le cronjob :
    • 30 1 * * * extract_data.sh
Introduction au scripting 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 avec crontab -l.

30 1 * * * extract_data.sh

Beau travail !

Introduction au scripting Bash

Passons à la pratique !

Introduction au scripting Bash

Preparing Video For Download...