Démarrage automatique d'un script Raspberry Pi

Démarrage automatique d'un script Raspberry Pi

26 février 2020
3, 2, 1... Décollage !


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 :

  1. Utiliser des chemins absolus
  2. 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 :

  1. Utiliser des chemins absolus
  2. 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 🤓

Sources