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.
Pour réaliser ce tutoriel, il vous faudra :
... et c'est tout ! 😀
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.
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é :
La meilleure façon de comprendre reste les exemples, en voici donc quelques-uns.
35 12 * * * sudo reboot
Le Raspberry Pi redémarrera tous les jours à 12:35
0 * * * * sudo python ~/temperature/takeTemp.py
Le Raspberry Pi exécutera le script python localisé à ~/temperature/takeTemp.py toutes les heures rondes.
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.
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.
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 ! 😎
Créer et executer un programme Python sur Raspberry Pi
Test, installation et réglages d'un écran tactile LCD 7
⚡NEW⚡Raspberry Pi 5, version 8Go
87.55 €
Caméra Raspberry Pi 5MP 1080p
12.95 €
4.9/5 | 16 votes