Exécuter au démarrage.

Comment exécuter un programme au démarrage de la Raspberry Pi ?

Mis à jour le 22 août 2020 - 10 Commentaires - , , , ,

On a parfois besoin d’exécuter un programme ou une ligne de commande au moment où notre Raspberry Pi démarre.

C’est notamment le cas quand on fabrique un objet pour de la domotique, et que l’on souhaiterai lancer automatiquement un programme au branchement de l’objet.

Dans ce tutoriel nous allons voir une façon très simple de lancer un programme au démarrage de la Raspberry.

Le matériel que nous allons utiliser.

Dans ce tutoriel nous avons besoin seulement de :

Si vous souhaitez réaliser ce tutoriel sans pouvoir accéder directement à la Raspberry Pi, vous devrez également disposer d’un PC en mesure de lire les cartes SD ou utiliser un adaptateur.

Lancer un programme au démarrage de la Raspberry Pi avec rc.local.

Pour Mac OS et Windows vous aurez besoin de pouvoir accéder à la partition rootfs si vous voulez faire cette opération depuis votre PC. Pour cela, consultez notre tutoriel pour lire une partition Linux depuis Mac et Windows.

Pour lancer un programme au démarrage de la Raspberry Pi le plus simple est d’utiliser le fichier /etc/rc.local.

Ce fichier contient un ensemble de commandes qui seront exécutées juste avant que la Raspberry Pi n’ai fini de booter.

Pour lancer un programme au démarrage de la Raspberry Pi, il vous suffit donc de modifier le fichier /etc/rc.local sur la carte SD (depuis la Pi, ou en modifiant le fichier /etc/rc.local dans la partition rootfs de la carte branchée à votre PC).

Pour que le programme soit lancé, il vous suffit de chercher la ligne :

exit 0

dans le fichier et d’ajouter la ligne de commande appelant votre programme avant la ligne exit.

Par exemple, si je veux appeler un script Python 3 nommé example.py et situé dans le dossier /home/pi au démarrage, je vais remplacer la ligne exit 0 par :

/usr/bin/python3 /home/pi/example.py

Quelques points importants sont à noter.

Premier point, le programme sera exécuté par l’utilisateur root et aura donc tous les droits. Attention à ce que vous faîtes !

Deuxième point, vous devriez toujours utiliser les chemins absolus et non relatifs, le comportement des chemins relatifs est imprévisible.

Troisième et dernier point, votre programme doit rendre la main au script ou la Raspberry Pi ne pourra jamais finir de booter. Si votre programme effectue une boucle infinie, vous devez le lancer en tâche de fond en ajoutant un & après la commande. Dans notre cas cela donnerait :

/usr/bin/python3 /home/pi/example.py &

Votre programme sera désormais correctement lancé au démarrage de la Raspberry Pi !

4/5 - (62 votes)
Partager
Newsletter
Auteur :
Raspberry Pi FR
Rejoignez la communauté Raspberry Pi
Un ordinateur à 35€ déjà vendu à 10 millions d'exemplaires
ACHETEZ LA NOUVELLE RASPBERRY PI 4
Tutoriels en rapport
Installer un media-center avec OSMC sur votre Raspberry Pi ! RaspiSMS 2.0, envoyer des SMS par internet avec la Raspberry Pi Installer un serveur web sur votre Raspberry (Apache + PHP + MySQL) Bien choisir vos accessoires pour les Raspberry Pi 3 et 2 Installer un serveur Minecraft sur votre Raspberry Pi !
10 commentaires
Besoin d'aide ? Vous la trouverez plus vite sur notre forum.

  1. HA dit :

    Bonjour Colibri, est ce que vous pouvez poster plus de détails par rapport à ta méthode svp, merci 🙂

  2. Higo dit :

    Coucou moi j’ai essayé de lancer par crontab par rapport.local oue créant un sh mais sans succès..je désespère

  3. Colibri dit :

    Hi!
    Ce message pour un retour d’expérience, qui pourra peut-être être utile à certain.. Je n’ai pas réussi à lancer le script avec la méthode présentée, ni celle de crontab, ni profile (trouvée sur internet).
    Le fichier s’exécute sans problème lorsque je le lance via le terminal et que j’ai rendu le script exécutable(chmod) et ai même réinstaller Raspbian pour être sûr que je n’avais pas modifié accidentellement un fichier.
    Finalement j’ai réussi en insérant le chemin d’accès dans le document /home/pi/.bashrc, après mainte recherche sur le net. Je précise que le scipt utilise le module telebot, je débute aussi en Rpi et en programmation plus généralement, peut-être que les problèmes venaient de là aussi 🙂

    1. Salut, ce que tu décris ressemble beaucoup à une erreur due à l’absence d’un chemin dans l’environnement. Le problème est généralement rencontré quand on utilise des chemins relatifs ou simplement des noms de commandes au lieu d’utiliser directement le chemin absolu.

  4. Suniron dit :

    Hello,

    Perso, je préfère utiliser systemd pour démarrer un programme automatiquement au boot (je n’ai jamais utilisé rc.local plutôt) car il me semble que c’est plus réçent en présent sur tous les Linux réçents.

    Cela permet de positionner des variables d’environnement, de relancer le programme en cas de crash, de récupèrer plutôt facilement les logs (avec systemctl status nomDuServiceCréé) etc.

    1. En fait systemd n’est pas dispo sur toutes les distributions, il y a même eu des débats sans fin sur son utilisation où non à l’époque de sa montée en puissance.
      Techniquement systemd est une meilleure solution que rc.local, ça ne fait aucun doutes, mais rc.local est la technique mise en avant par la fondation. Par ailleurs, rc.local est bien plus simple à comprendre et à prendre en main pour un débutant.

  5. Speedjéjé dit :

    Bonjour,
    Je souhaiterais lancer automatiquement un programme à l’ouverture d’une session utilisateur particulière et pas automatiquement sur les autres sessions.
    Comment procéder ?
    Merci et merci pour le tuto.

    1. Salut, je ne connais pas la procédure exacte de tête mais il me semble que la solution serait de rajouter dans commandes dans un fichier qui doit probablement être dans le home du user sous le .bashrc ou quelque chose comme ça.

  6. vince dit :

    su user
    crontab -e
    @reboot inserer la commande ici

    1. C’est une solution qui peut fonctionner mais qui ne va pas exactement lancer les choses aux mêmes moments. Mais merci pour la suggestion.

Partager
Inscription à la Newsletter
Inscrivez-vous à la Newsletter.
Vous avez aimé cet article ?
Inscrivez-vous et restez informé !