Lancement automatique d’un script au démarrage

Bonjour du samedi soir,

*** (article non relu et juste tapé “au km” pour le moment) ***

Vous voulez rire ?
Cet article fait écho à une remarque sur un forum 🙂

Une personne demandant de l’aide déplorait l’absence de tutoriels clairs pour réaliser le lancement automatique d’un script au démarrage de son Raspberry Pi.
Et il est vrai que des modifications des systèmes rendent certaines solutions caduques.

Je vais donc réaliser un petit tutoriel à toutes fins utiles.
Il est éprouvé pour Raspbian Stretch (donc valable pour les systèmes basés sur la version 9 de Debian dont le nom de code est “Stretch”).

En fait, je connais 2 façons de lancer automatiquement un script (bash ou python) ou une application au démarrage d’un système Linux.

  1. Lancement automatique d’un script lors du démarrage de l’interface graphique
  2. Lancement automatique d’un script lors du démarrage “initial” du Raspberry

Cet article ou tutoriel sera donc relativement rapide.

1 – Lancement automatique d’un script lors du démarrage de l’interface graphique

On part du principe que le script sera dans le dossier pi.

Création du script avec sudo nano /home/pi/script.py pour un code en python ou sudo nano /home/pi/script.sh pour un code en bash.

On applique les droits avec sudo chmod +x /home/pi/script.py

Ensuite, on édite le système de démarrage de l’interface graphique avec sudo nano /etc/xdg/lxsession/LXDE-pi/autostart

puis on ajoute la ligne pour lancer le script (ça permet, par exemple, de charger un script pour transformer le Raspberry en Photomaton)

@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
python3 /home/pi/script.py
point-rpi

Ou cette ligne pour lancer le script dans un terminal (ça permet, par exemple, de charger un script pour transformer le Raspberry en lecteur/exécuteur de QR codes)

@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
@lxterminal --command="./script.sh"
point-rpi

Note : Remplacez @lxterminal --command="./script.sh par @lxterminal -e /usr/bin/python3.5 /home/pi/script.py pour lancer un script python au sein même d’un terminal.

ou celle-ci pour lancer un service voulu (un exemple parmi d’autres ; là, on lance automatiquement une vidéo en mode fenêtré avec VLC)

@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
@vlc /home/pi/Videos/film.mp4
point-rpi

Note : Remplacez @vlc /home/pi/Videos/film.mp4 par omxplayer -b /home/pi/dossier-voulu/film-a-lire.mkv pour lancer lire la vidéo en plein écran avec omxplayer.

ou … (à vous de laisser parler votre créativité)

Pour vérifier si tout se passe bien, pas besoin de faire un redémarrage ; un simple “logout” suivi d’une reconnexion suffit

2 – Lancement automatique d’un script lors du démarrage “initial” du Raspberry

Si on fonctionne en mode console, on automatise l’action en chargeant un script même sans interface graphique
Donc on doit réaliser l’édition de rc.local avec sudo nano /etc/rc.local

On y insère sudo python3 /home/pi/script.py& ou sudo python /home/pi/script.py& (selon la version de python) juste avant la ligne # Print the IP address

Le fichier sera donc :

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
sudo python3 /home/pi/script.py&
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

exit 0

Évidemment, comme précédemment, on a créé le script avec sudo nano /home/pi/script.py.
Et appliqué les droits avec sudo chmod +x /home/pi/script.py

Et voilà,
Vous avez donc 2 solutions pour lancer un script ou un service ou une application de manière simple et automatique au démarrage du Raspberry Pi.
Soit dès le démarrage du Raspberry Pi en lui-même (en mode console)
Soit seulement après le lancement de l’interface graphique.

Bien sûr, vous pouvez utiliser les 2 solutions et ainsi avoir une action constante (lancé si le Rpi est démarré) et une seconde, en plus, uniquement une fois que l’interface graphique est activée.
C’est la solution que j’ai choisie pour l’automatisation de mon Raspberry faisant office de Photomaton :
Dès le démarrage, mon script python gérant les bouton de “Shutdown” et “reboot” est fonctionnel.
Mais, la fonction “PhotoBooth” n’est vraie que si l’interface graphique est lancée.
Pourquoi ?
Parce que j’ai désactivé l’autodémarrage et créé un 2ème utilisateur pour pouvoir utiliser le Rpi comme je l’entends.
Sans blague … C’est qui le chef ?!?!?

Bon, ben, maintenant, faut y aller, c’est bon, j’ai terminé ; à vous de faire !

A propos de Alban

Papa de 4 enfants étant lui même resté un enfant. Tombé par obligation dans l'informatique à 22 ans pour le boulot et s'étant "un peu" pris au jeu ... Pas un génie de l'informatique (loin de là), mais intéressé et carrément orienté Linux et entraide.

14 commentaires à propos de “Lancement automatique d’un script au démarrage”

  1. Bonjour Boris,
    J’ai suivi vos méthodes mais sans succès. Je cherche à lancer un script python (3.5) qui une fois terminer devrait créer un fichier texte hors les commandes (sudo nano /home/pi/Monscript.py et sudo chmod +x /home/pi/Monscript.py) ne s’effectue pas car une fois redémarré mon raspberry pi (model 3b+) ne les prend même pas en compte. En effet, il n’y a même pas de message d’erreurs ou quoique ce soit d’autres indiquant que Monscript.py soit considéré au démarrage. J’ai par ailleurs fait en sorte que les script en python 3.5 étaient bien exécuté par défaut.
    Que dois-je faire?
    Merci d’avance.

    • Salut Matth,
      Bon, moi, c’est Alban ; Boris était un visiteur.
      Mais c’est pas grave, je vais répondre tout de même. 🙂
      Quand tu fais sudo nano /home/pi/Monscript.py = tu ouvres nano et tu peux créer ton script puis l’enregistrer (“Crtl”+”x” puis “o” puis “Entrée”)
      Ensuite, tu dois le voir dans /home/pi/
      La commande sudo chmod +x /home/pi/Monscript.py ne sert qu’à donner les droits.
      Si tu veux que ton script puisse être exécuté au démarrage, tu dois l’ajouter dans rc.local en faisant sudo nano /etc/rc.local et en ajoutant la ligne sudo python3 /home/pi/Monscript.py& juste après la ligne # Print the IP address
      Ensuite, tu enregistres tes modif (“Crtl”+”x” puis “o” puis “Entrée”) et il ne te restera plus qu’à redémarrer.
      Redis-moi,
      ++

  2. bonjour
    merci beaucoup pour ce tuto qui m’à permis de rendre automatique un script de commande d’un watchdog externe.
    cela fonctionne parfaitement.

    • Bonjour phenixrb,
      Merci pour ce Retour.
      J’ai donc eu raison de rédiger cet article puisqu’il semble servir dans des domaines variés !
      D’ailleurs, j’en profite ; si des lecteurs souhaitent rédiger un article pour aider la communauté, c’est tout à fait possible.

    • Pas de quoi Troptrop !
      Les forums ont leurs avantages (j’y ai passé des heures et des heures), mais rien ne remplace la concaténation des infos en un résumé plus aisé à suivre.
      Et c’est justement le but de cet article (et, plus largement, de ce site) 😉
      Au plaisir,

  3. Rétroliens : Sonnette connectée – TREVILLY.COM

  4. Super!
    Papa également de 3 enfants, qui m’ont abandonné voila plus de 20 ans, seul avec leur informatique.
    Je trouve aujourd’hui dans vos explications des réponses a beaucoup de questions sans réponses. Et pourtant, on en trouve de toutes sortes, aucunes ne fonctionnent.
    Merci pour le gros coup de main efficace .

    • Bonsoir Babel,
      C’est typiquement le genre de commentaire que certaines personnes jugent “inutile ; ne servant à rien“, mais que je trouve utile et agréable, voire indispensable 🙂
      Ça fait vraiment plaisir.
      Merci,
      Vraiment !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*