Introduction
Ah le Raspberry Pi ... Il est plaisant de bidouiller sur ce mini-ordinateur. Un petit script bash par ici, un programme python par là. Il n'est pas rare de vouloir ensuite que notre script / programme se lance automatiquement au démarrage de la bête .
La "bonne manière" de faire serait de créer et configurer un service linux via systemd
mais ça sera pour une autre fois. Pour un test rapide nous allons voir trois méthodes très simples :
- Fichier /etc/rc.local
- Fichier autostart de LXDE (interface graphique)
- Tâche cron
Dans les exemples suivant on souhaite démarrer automatiquement le script python3 /home/pi/my-script.py
.
Méthode 1 : /etc/rc.local
C'est une méthode pratique car elle n'est pas dépendante de l'interface graphique LXDE. Vous pouvez donc utiliser cette méthode si votre Raspberry Pi ne démarre pas le serveur X, mais qu'il démarre en "mode console".
De plus votre script sera executé par l'utilisateur root
ce qui peut être pratique (mais dangereux !) si votre script a besoin de privileges particuliers pour fonctionner. Par exemple, pour communiquer via les GPIO du Raspberry Pi.
Ajouter dans le fichier /etc/rc.local
la ligne suivante avant l'instruction exit 0
:
# example for python3 script
python3 /home/pi/my-script.py &
Il est important de noter 2 points :
- Utiliser des chemins absolus
- Ajouter le
&
en fin de ligne pour lancer votre commande dans un processus séparé. Ceci évite de bloquer le démarrage du Raspberry Pi si votre logiciel ne rend pas la main rapidement
Méthode 2 : autostart de LXDE
LXDE utilise LXSession
pour gérer le démarrage automatique de ses applications. Afin de démarrer notre script quand l'interface graphique démarre, il suffit d'éditer le fichier suivant :
- Avant Raspbian Buster (Debian 10) :
~/.config/lxsession/LXDE-pi/autostart
- A partir de Raspbian Buster :
/etc/xdg/lxsession/LXDE-pi/autostart
# autostart my-script
python3 /home/pi/my-script.py
# autostart my-script (and auto restart if crashed)
@python3 /home/pi/my-script.py
L'arobase @
en début de ligne indique que l'application doit être relancée automatiquement en cas de crash.
Méthode 3 : tâche cron
La commande crontab
permet de planifier des tâches Linux. C'est une commande assez puissante qui permet par exemple de démarrer un logiciel à un moment précis, par exemple : tous les dimanches soirs à 23h00. Dans notre cas nous allons l'utiliser uniquement pour lancer une application au démarrage du système Linux.
Pour modifier ou ajouter une tâche, il faut utiliser la commande suivante :
crontab -e
Vous pourrez ensuite utiliser un éditeur en mode console comme vim
ou nano
.
Ajouter simplement la ligne suivante avec l'option @reboot
au lieu d'une date :
@reboot python3 /home/pi/my-script.py &
Il est important de noter 2 points :
- Utiliser des chemins absolus
- Ajouter le
&
en fin de ligne pour lancer votre commande dans un processus séparé. Ceci évite de bloquer le démarrage du Raspberry Pi si votre logiciel ne rend pas la main rapidement