Exécuter des actions automatiquement sur Raspberry Pi


27 septembre 2020 • 1 • 4.9

Dans grand nombre de cas, on peut avoir besoin de planifier des tâches sur le Raspberry Pi, ou de répéter des actions à intervalle de temps régulier par exemple. Les systèmes Linux permettent de programmer cela très facilement, grâce aux crontab. Prenons un petit exemple d'utilisation : vous souhaitez exécuter un script qui enregistre la température actuelle toutes les 5 minutes, les crontabs seront la solution à ce problème !
Nous allons donc voir dans ce tutoriel comment les appréhender.

Exécuter des actions automatiquement sur Raspberry Pi

Prérequis

Pour réaliser ce tutoriel, il vous faudra :

... et c'est tout ! 😀

Editer le fichier crontab

Tout va se passer dans le fichier crontab du Raspberry Pi. Pour éditer le fichier crontab du Raspberry Pi, il suffit d'entrer la commande suivante dans un terminal :

crontab -e

Lors de la première exécution, on vous demande de sélectionner un éditeur par défaut. Choisissez selon vos préférences, nano étant l'éditeur le plus simple.
Vous devriez arriver dans un fichier contenant ceci :

# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').
#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
        

Ces lignes ne sont que des commentaires, et indiquent en anglais le principe de fonctionnement des crontab. Nous allons tout de suite voir comment les utiliser.

Format d'une crontab

Commençons par voir un exemple de crontab. Celle-ci est utilisée dans le tutoriel montrant comment réaliser des courbes de température avec un Raspberry Pi.

*/15 * * * * curl localhost:5000/getTemp?sauvegarde=True

Alors, que fait cette crontab ? 🤔
Eh bien elle exécute simplement la commande curl localhost:5000/getTemp?sauvegarde=True, toutes les 15 minutes. Dans le projet, cela permet de faire une requête à notre serveur, en demandant d'enregistrer la température.
Si on devait le faire à la main, cela reviendrai à ouvrir un navigateur, et charger la page localhost:5000/getTemp?sauvegarde=True, toutes les 15 minutes.
Voilà pour l'exemple, voyons maintenant le cas général.

# mm hh jj MMM JJJ [utilisateur] tâche
# .---------------- Minute (0 - 59) # | .------------- Heure (0 - 23) # | | .---------- Jour (1 - 31) # | | | .------- Mois (1 - 12) OU jan,feb,mar,apr ... # | | | | .---- Jour de la semaine (0 - 6) (Sunday=0 or 7) OU sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * [utilisateur] commande à exécuter

On peut utiliser différentes notations pour chaque unité :

Exemples

La meilleure façon de comprendre reste les exemples, en voici donc quelques-uns.

Tous les jours à 12h35

35 12 * * * sudo reboot

Le Raspberry Pi redémarrera tous les jours à 12:35


Toutes les heures rondes

0 * * * * sudo python ~/temperature/takeTemp.py

Le Raspberry Pi exécutera le script python localisé à ~/temperature/takeTemp.py toutes les heures rondes.


Du lundi au vendredi à 12h

0 12 * * 1-5 sudo python doSomething.py

Le Raspberry Pi exécutera le script python doSomething.py à midi, toute la semaine, sauf le Week-End.


Toutes les minutes entre 23h et 23h59, les 31 Décembre

0-59 23 31 12 * sudo python decompte.py

Le Raspberry Pi exécutera le script python decompte.py toutes les minutes entre 23h et 23h59, tous les 31 Décembre.

On va s'arrêter là pour les exemples. Si vous souhaitez vérifier votre formulation de crontab, le site crontab.guru traduit en anglais la crontab que vous entrez.


Raccourcis

Notez qu'il existe des raccourcis pour les utilisations les plus courantes. Le plus utile de ces raccourcis est le @reboot. Il permet d'exécuter la commande qui suit à chaque démarrage du Raspberry Pi. Cela permet par exemple dans le cas d'un serveur Web de le démarrer automatiquement.
Voici un exemple :

@reboot sudo python3 /home/pi/ProjetGraphTemp/app.py

Ici, on lance la commande sudo python3 /home/pi/ProjetGraphTemp/app.py à chaque démarage.

Voici la liste complète des autres raccourcis de crontab.

Raccourcis Description Équivalent
@reboot Au démarrage Aucun
@yearly Tous les ans 0 0 1 1 *
@annually Tous les ans 0 0 1 1 *
@monthly Tous les mois 0 0 1 * *
@weekly Toutes les semaines 0 0 * * 0
@daily Tous les jours 0 0 * * *
@midnight Toutes les nuits 0 0 * * *
@hourly Toutes les heures 0 * * * *

Voilà, vous savez maintenant comment programmer l'exécution de tâches, à intervalles de temps régulier ! 😎

A lire

Branchement caméra - présentation

Créer et executer un programme Python sur Raspberry Pi


Branchement caméra - présentation

Test, installation et réglages d'un écran tactile LCD 7






Ce tutoriel vous a plu ?

starstarstarstarstar

4.9/5 | 15 votes




Commentaires



Commenter
Votre adresse mail ne sera pas visible sur le site.

Les commentaires sous soumis à vérification avant publication.